ubuntu系统编译安装OpenCV 4.4
内容转载自我的博客
前言
如果你只是想要使用C++或者Python语言来调用OpenCV,而且并不关心OpenCV是否为最新版本,那么请直接按照如下代码:
sudo apt update && sudo apt install libopencv-dev python3-opencv
前者libopencv-dev是用于C++开发的库(已经很老旧了)
后者python3-opencv是用于python3开发的库,你可以在终端输入
/usr/bin/python3 -c "import cv2;print(cv2.__version__)"来验证python3-opencv是否安装成功
/usr/bin/pip3 install opencv-contrib-python==3.4.2.17来安装扩展功能(3.4.2版本以后的预编译库中都不会再加入non-free模块)
1. 下载源码
在官方网站下载最新源代码(截止本文测试时,最新版本为4.4.0),如果需要使用SIFT算法等扩展功能,下载opencv_contrib一起编译:
- 下载适用于linux的opencv源码的zip压缩文件并解压
- 下载opencv_contrib源码的zip压缩文件并解压
例如,opencv 4.4源码解压到当前目录下,opencv_contrib 4.4也解压到当前目录下
2. 安装各种依赖
按照如下步骤:
# 安装系统依赖
sudo apt install build-essential cmake git libgtk2.0-dev \
pkg-config libavcodec-dev libavformat-dev libswscale-dev \
libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev \
libjasper-dev libdc1394-22-dev
# 添加源以继续安装依赖libjasper
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
# 安装系统依赖
sudo apt install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev \
libjasper-dev libdc1394-22-dev libsnappy-dev libboost-all-dev \
python3-dev python3-numpy ffmpeg cmake-qt-gui libopenblas-dev \
tesseract-ocr libtesseract-dev libprotobuf-dev libleveldb-dev \
libhdf5-serial-dev protobuf-compiler libatlas-base-dev \
libgflags-dev libgoogle-glog-dev liblmdb-dev libfaac-dev \
gfortran libgstreamer1.0-dev libatlas-base-dev libxvidcore-dev \
libpng-dev libopenexr-dev libtiff-dev libwebp-dev \
libmp3lame-dev libtheora-dev libvorbis-dev \
libopencore-amrwb-dev x264 v4l-utils libgdk-pixbuf2.0-dev \
manpages-dev libopencore-amrnb-dev libgstreamer-plugins-base1.0-dev \
libqt5widgets5 libqt5gui5 libqt5dbus5 libqt5network5 libqt5core5a \
qtcreator qt5-default
# 修复可能安装出错的依赖
sudo apt install -f
3. 开始编译安装
按照以下步骤:
# 在opencv4.4源码解压后的文件夹下面,创建编译文件夹
mkdir build && cd build
# 配置编译选项
# CMAKE_INSTALL_PREFIX 是最终OpenCV的安装位置
# OPENCV_ENABLE_NONFREE 指示是否开启Non-free的算法
# OPENCV_EXTRA_MODULES_PATH 指示扩展算法的源码文件夹
# WITH_CUDA 该选项需要确保自己已安装显卡驱动和cuda
# 可以关注下命令的输出,可以从中找到哪些模块没有配置成功
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local/opencv4.4 \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_EXTRA_MODULES_PATH=/home/zfb/opencv_contrib-4.4.0/modules \
-D OPENCV_GENERATE_PKGCONFIG=YES \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D WITH_CUDA=ON \
-D BUILD_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=ON ..
# 开启12个线程同时编译源码
make -j12
# 安装OpenCV到指定位置
sudo make install
4. 配置C++开发环境
按照以下步骤:
# 查看该文件是否存在(OPENCV_GENERATE_PKGCONFIG=YES参数保证此文件存在)
cat /usr/local/opencv4/lib/pkgconfig/opencv4.pc
# 把上面的文件添加到PKG_CONFIG_PATH
sudo vim /etc/profile.d/pkgconfig.sh
# 文件内容如下
# export PKG_CONFIG_PATH=/usr/local/opencv4/lib/pkgconfig:$PKG_CONFIG_PATH
# 激活文件
source /etc/profile
# 验证配置,如果不报错则说明正常
pkg-config --libs opencv4
5. 程序执行时加载动态库*.so
按照以下步骤:
# 将OpenCV的库添加到路径
sudo vim /etc/ld.so.conf.d/opencv4.conf
# 添加内容如下(也可能是空文件)
# /usr/local/opencv4.4/lib
# 更新配置
sudo ldconfig
6. 测试cpp文件
按照以下步骤:
# 进入下载的opencv4.4的源码文件夹下的samples目录
cd samples/cpp/example_cmake
# 配置编译选项
cmake .
# 开始编译文件
make
# 执行测试代码,弹出窗口实时显示摄像头画面
./opencv_example
7. 配置python3的opencv环境
首先需要找到编译好的用于python3的动态库文件的位置,可以使用如下代码搜索(其实在sudo make install时也会显示):
sudo find / -iname "cv2*.so"
得到路径为/usr/local/opencv4.4/lib/python3.8/dist-packages/cv2/python-3.8/cv2.cpython-38-x86_64-linux-gnu.so
然后把它复制到对应python解释器的/path/to/dist-packages(系统自带的python解释器)和/path/to/site-packages(用户安装的python解释器)目录下,之后就能在该python解释器中使用python-opencv库:
# 查看系统Python环境的包路径
/usr/bin/python3 -c "import pip;print(pip)"
# 创建软链接使得/usr/bin/python3可以使用opencv
sudo ln -s /usr/local/opencv4.4/lib/python3.8/dist-packages/cv2/python-3.8/cv2.cpython-38-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/cv2.so
# 测试安装结果
/usr/bin/python3 -c "import cv2;print(cv2.__version__)"
8. 卸载编译安装的OpenCV
- 进入编译时的文件夹
cd build - 执行卸载命令
sudo make uninstall,此命令会删除安装时添加的所有文件,但是不处理文件夹 - 根据上一个命令的回显,删除目的文件夹的与该软件有关的空文件夹
ubuntu系统编译安装OpenCV 4.4的更多相关文章
- 使用Ubuntu系统编译安装Zabbix企业级监控系统
使用Ubuntu系统编译安装Zabbix企业级监控系统 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Ubuntu系统部署笔记:https://www.cnblogs.com/ ...
- Ubuntu下编译安装OpenCV 2.4.7并读取摄像头[转]
主要参考: 1.http://www.ozbotz.org/opencv-installation/ 2.http://www.ozbotz.org/opencv-install-troublesho ...
- Ubuntu下编译安装OpenCV 2.4.7并读取摄像头
主要参考: 1.http://www.ozbotz.org/opencv-installation/ 2.http://www.ozbotz.org/opencv-install-troublesho ...
- 树莓派的Respbian或者ubuntu系统下安装opencv最有效的方法
第一种方法当然首选和其他安装包相同的方法pip install opencv-python安装失败后果断选择第二种方法,这第二种方法尝试过很多次了,屡试不爽 第二种方法:sudo apt-get in ...
- Ubuntu系统---编译opencv程序的几种方式g++、Makefile、Cmake
Ubuntu系统---编译opencv程序的几种方式g++.Makefile.Cmake 先建立一个工程(一个文件夹),写好xxx.cpp文件,可以是多个: //----------opencv.cp ...
- 在Ubuntu 16.04 LTS下编译安装OpenCV 4.1.1
目录 一 安装前的准备 二 编译并安装OpenCV 4.1.1 注:原创不易,转载请务必注明原作者和出处,感谢支持! OpenCV目前(2019-8-1)的最新版本为4.1.1.本文将介绍如何在Ubu ...
- [笔记] Ubuntu 18.04源码编译安装OpenCV 4.0流程
标准常规安装方法安装的OpenCV版本比较低,想尝鲜使用4.0版本,只好源码安装. 安装环境 OS:Ubuntu 18.04 64 bit 显卡:NVidia GTX 1080 CUDA:10.0 c ...
- linux源码编译安装OpenCV
为了尽可能保证OpenCV的特性,使用OpenCV源码编译安装在linux上.先从安装其依赖项开始,以ubuntu 14.04.X为例讲解在Linux上源码编译安装OpenCV,其他linux版本可以 ...
- linux源代码编译安装OpenCV
为了尽可能保证OpenCV的特性,使用OpenCV源代码编译安装在linux上.先从安装其依赖项開始,以ubuntu 14.04.X为例解说在Linux上源代码编译安装OpenCV,其它linux版本 ...
随机推荐
- alipay 小程序 & online IDE & demos
alipay 小程序 & online IDE & demos system-info iOS / Andriod https://opendocs.alipay.com/mini/a ...
- better-scroll使用参考
************better-scroll是基于父元素固定高度,溢出才滚动的,所以父元素务必定高,否则无法滚动***************************************** ...
- VAST算力增值效应,助力NGK全生态产业链!
虽然比特币和区块链在2009年就诞生了,但它们对于一些人来说好像还是很遥远,归根结底还是由于数字货币始终未能在全球真正实现流通和支付功能.区块链1.0,以比特币为代表,实现了数字支付:区块链2.0,E ...
- 「NGK每日快讯」12.31日NGK第58期官方快讯!
- Python算法_三种斐波那契数列算法
斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列&qu ...
- JVM 揭秘:一个 class 文件的前世今生
本文转载自JVM 揭秘:一个 class 文件的前世今生 导语 引子:我们都知道,要运行一个包含 main 方法的 java 文件,首先要将其编译成 class 文件,然后加载 JVM 中,就可以运行 ...
- 下载com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
看别人都说在repo.maven.com下载,没想到竟然要登录 索性我直接在国内阿里云的镜像仓库下载好了,速度又快又方便 搜索aspectj 下载地址:https://maven.aliyun.com ...
- 微信小程序:删除时提示是否删除
代码如下: wx.showModal({ title: '提示', content: '确定要删除吗?', success: function (sm) { if (sm.confirm) { // ...
- easyPOI基本用法
参考网址:http://www.wupaas.com/ 1.Excel文件的导入导出 项目源码:后台:https://github.com/zhongyushi-git/easypoi-demo-ad ...
- RabbitMQ(二) Java使用RabbitMQ
2-1 RabbitMQ 生产者消息发送 创建 Maven 项目 Send 加入依赖 <dependency> <groupId>com.rabbitmq</groupI ...