先前准备:
1.最好不要改动ubuntu默认的python2与3的版本,容易出问题。需要选择时用python,python3,python3.x选择即可。
2.ubuntu18.04 pc端装机自带的3.x.x版本可以放着不动,不冲突。如果在提前安装了ROS的情况下,用remove完全卸载opencv可能会导致ROS许多文件被删除,慎重。
3.TX2的opencv安装方法同下,TX2刷机自带的opencv4.x.x会被直接覆盖,无需卸载。查询TX2的cuda arch bin需要安装jtop,安装教程可直接在csdn搜索,非常简单。
4. ..- -. .. -. ... - .- .-.. .-.. -....- --- .--. . -. -.-. ...- .--. -.-- - .... --- -. -....- ..-. .. .-. ... -
1.安装教程
第一步:
下载opencv与opencv-contrib的源码包,注意版本对应
opencv:https://github.com/opencv/opencv/releases
opencv-contrib:https://github.com/opencv/opencv_contrib/releases
第二步:
解压opencv与opencv-contrib,并将opencv-contrib文件夹放到opencv文件夹中
第三步:
安装依赖
-
sudo apt
-
get install build
-essential \
-
libavcodec
-dev \
-
libavformat
-dev \
-
libavutil
-dev \
-
libeigen3
-dev \
-
libglew
-dev \
-
libgtk2.
0
-dev \
-
libgtk
-
3
-dev \
-
libjpeg
-dev \
-
libpostproc
-dev \
-
libswscale
-dev \
-
libtbb
-dev \
-
libtiff5
-dev \
-
libv4l
-dev \
-
libxvidcore
-dev \
-
libx264
-dev \
-
qt5
-
default \
-
zlib1g
-dev \
-
libavresample
-dev \
-
gstreamer1.
0
-plugins
-bad \
-
pkg
-config
其中可能会遇到依赖包libjasper-dev无法安装的问题
使用命令 sudo apt-get install libjaster-dev 后
提示:errorE: unable to locate libjasper-dev
解决方法:
-
sudo
add
-apt
-repository "deb Index of /ubuntu xenial-security main"
-
sudo apt
update
-
sudo apt install libjasper1 libjasper
-dev
成功的解决了问题,其中libjasper1是libjasper-dev的依赖包
参照:Ubuntu18.04下安装OpenCv依赖包libjasper-dev无法安装的问题_SDUHXP的博客-CSDN博客_libjasper
第四步:
进入opencv目录下,创建build文件夹(我用的4.5.1)
-
cd opencv-4.5.1
-
mkdir build
-
cd build
cmake编译(建议先按照后面重要部分配置完后再进行cmake编译)
-
cmake -DCMAKE_BUILD_TYPE=RELEASE\
-
-D CMAKE_INSTALL_PREFIX=/usr/
local\
-
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-
4.5.
1/modules\
-
-D WITH_CUDA=
1\
-
-D WITH_CUDNN=
ON \
-
-D WITH_TBB=
ON \
-
-D OPENCV_DNN_CUDA=
ON \
-
-D CUDA_ARCH_BIN=
'7.2'\
-
-D ENABLE_FAST_MATH=
1\
-
-D CUDA_FAST_MATH=
1\
-
-D WITH_CUBLAS=
1\
-
-D BUILD_opencv_python3=
ON -DBUILD_opencv_python2=
ON\
-
-D WITH_V4L=
ON\
-
-D WITH_QT=
ON\
-
-D WITH_OPENGL=
ON\
-
-D OPENCV_GENERATE_PKGCONFIG=
1\
-
-D WITH_GSTREAMER=
ON\
-
-D CUDA_GENERATION=
Pascal ..
部分编译命令解释:
-
cmake -DCMAKE_BUILD_TYPE=RELEASE\
-
-D CMAKE_INSTALL_PREFIX=/usr/
local\#指定安装路径
-
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-
4.5.
1/modules\#opencv_contirb modules路径
-
-D WITH_CUDA=
1\#使用cuda加速 需要配置好cuda
-
-D WITH_CUDNN=
ON\#需要配置好cudnn
-
-D WITH_TBB=
ON\
-
-D OPENCV_DNN_CUDA=
ON\
-
-D CUDA_ARCH_BIN=
'7.2'\#指定显卡算力,根据自己的显卡算力填,下面有教程
-
-D ENABLE_FAST_MATH=
1\
-
-D CUDA_FAST_MATH=
1\
-
-D WITH_CUBLAS=
1\
-
-D BUILD_opencv_python3=
ON -DBUILD_opencv_python2=
ON\
-
-D WITH_V4L=
ON\
-
-D WITH_QT=
ON\
-
-D WITH_OPENGL=
ON\
-
-D OPENCV_GENERATE_PKGCONFIG=
1\用于生成opencv4文件,查版本用的
-
-D WITH_GSTREAMER=
ON\
-
-D CUDA_GENERATION=
Pascal ..
重要部分
以下内容最好在cmake之前提前搞完,因为像face_landmark、boostdesc_bgm.i、vgg、ippv这些文件国内一般会下载失败,需要下载的文件链接放在文章最后。
1. -D CUDA_ARCH_BIN='7.2' 这行编译很重要,不然老是导致opencv配置失败
加了有时候cuda还会报错,可以看这节最后部分的解决方法。
查询自己的显卡算力方式如下:
2.cmake可能会卡在ippicv下载的地方,一直下载不下来
解决方法:
a.手动下载ippicv 不用解压
b.修改opencv里的配置文件
打开终端,输入:
-
$ gedit /home/usrname/opencv_path/opencv/3rdparty/ippicv/ippicv.cmake
-
#记得usrname换成自己的用户名,opencv_path 换成自己opencv文件夹的路径
-
#或者直接在opencv里跟着路径3rdparty/ippicv/,直接双击打开ippicv.cmake也行
将ippicv.cmake文件下的第47行替换为本地路径
-
"file:///home/usrname/install/"
-
#"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"
-
#file后面的路径换成对应ippicv下载后保存的路径,索引到放ippicv的那个文件夹就行
3.cmake可能会卡在face_landmark_model.dat下载的地方,一直下载不下来。
解决方法:
a.手动下载face_landmark_model.dat
b.修改opencv里的配置文件
打开终端,输入:
-
$ gedit /home/usrname/tool/opencv-4.5.1/opencv_contrib-4.5.1/modules/face/CMakeLists.txt
-
#usrname 换成自己的用户名, <tool/opencv-4.5.1>换成自己opencv源码对应的文件夹
-
#还是对着路径直接进去找快一点
将CMakeLists.txt文件的第19行修改为本地路径,即将原来的网址修改为下载的文件保存的路径
-
"file:///home/usrname/install/"
-
#"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${__commit_hash}/"
-
# usrname记得替换为自己的用户名
-
#路径记得替换为自己文件对应的路径,索引到放face的那个文件夹就行
4.cmake可能会卡在boostdesc_bgm.i下载的地方,一直下载不下来。
解决方法:
a.手动下载boostdesc_bgm.i并解压
将下载的文件(不是文件夹)拷贝到opencv_contrib/modules/xfeatures2d/src/目录下
b.修改opencv里的配置文件(改两个)
改boostdesc_bgm.i地址
$ gedit /home/usrname/tool/opencv-4.5.1/opencv_contrib-4.5.1/modules/xfeatures2d/cmake/download_boostdesc.cmake
-
"file:///home/usrname/install/"
-
# 同理跟前面操作一样,找到原来的下载网址,改为本地文件地址,索引到存放的文件夹就行。
改vgg的地址:
$ gedit /home/usrname/tool/opencv-4.5.1/opencv_contrib-4.5.1/modules/xfeatures2d/cmake/download_vgg.cmake
-
"file:///home/usrname/install/"
-
# 同理跟前面操作一样,找到原来的下载网址,改为本地文件地址,索引到存放的文件夹就行。
参考:
2、3步骤:
ubuntu16.04 安装opencv IPPICV 和 face_landmark_model.dat下载不下来的问题解决_csdn330的博客-CSDN博客
4步骤:
Ubuntu系统opencv4.4安装常见问题 找不到 feature2d/test/test_detectors_regression.impl.hpp 文件_小小谢先生的博客-CSDN博客
以上步骤完成后就可以开始编译opencv了,进行第四步的cmake操作。
5.cmake完之后会给一个大致如下图的列表,及得检查:
1.检查一下cuda,cudnn是否检测到了
2.检查cudnn版本是否合适
3.检查NVIDIA GPU arch是否和自己之前输入的CUDA_ARCH_BIN是否一样,CUDA_ARCH_BIN=7.5的话这里应该会显示75。如果显示的数字不匹配,可以参考:Please check CUDA_ARCH_PTX or CUDA_ARCH_BIN in your build configuration错误解决_学术菜鸟小晨的博客-CSDN博客_cuda_arch_ptx在RTX2060显卡的机器上,编译了opencv4.4,报错如下:classes, confidences, boxes = net.detect(image, confThreshold, nmsThreshold)cv2.error: OpenCV(4.4.0) /home/ycc/opencv-4.4.0/modules/dnn/src/dnn.cpp:2353: error: (-216:No CUDA support) OpenCV was not built to work with thhttps://blog.csdn.net/qq_34717531/article/details/108735629?spm=1001.2014.3001.5506
第五步:
进行make,然后等待(pc的话make很快,tx2等板子就要跑很久了,核心太少),make成功后,进行安装 。
-
nproc
# 查看核数
-
sudo make -jx
#x是核数,加速编译,也有说x最大可以是核数的两倍的。但是我的1650用j12容易卡死 最后用的j8
-
sudo make install
有时候会在99,100编很多东西,不要着急,出来像上图一样的新命令行NVIDIA...才算完成。
其中make过程中遇到了几个问题:
1.fatal error: features2d/test/test_detectors_regression.impl.hpp: No such file or directory
原因是没找到这个文件,解决方法如下:
将opencv / modules / features2d复制,然后粘贴到opencv / build目录中来解决该问题。
2.
第六步:
配置opencv库
首先将OpenCV的库添加到路径,从而可以让系统找到
sudo gedit /etc/ld.so.conf.d/opencv.conf
执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件末尾添加
/usr/local/lib
保存后退出
然后生效配置文件。
sudo ldconfig
配置bash.bashrc文件
sudo gedit /etc/bash.bashrc
在末尾追加
-
PKG_CONFIG_PATH=
$PKG_CONFIG_PATH
:/usr/local/lib/pkgconfig
-
export
PKG_CONFIG_PATH
保存退出。
执行如下命令使得配置生效:
source /etc/bash.bashrc
更新:
sudo updatedb
至此配置完成
第七步:测试
1. 在终端输入代码:
-
pkg-config
--modversion opencv4
-
# 输出 4.5.1
-
python3 -c
"import cv2; print(cv2.__version__)"
-
# 输出 4.5.1
2.找到 opencv-4.5.1/samples/cpp/example_cmake 目录下,官方已经给出了一个cmake的example,我们可以拿来测试下。按顺序执行:
-
mkdir build
-
cd build
-
cmake ..
-
make
-
./opencv_example
出现你的摄像头影像,安装完成。
OK大功告成,可以愉快的使用opencv了。
卸载:
在opencv/build里运行
sudo make uninstall
然后把build删了就行,这个方法卸载的不彻底,一般用于编错了重编。
主要参考:
opencv编译过程中缺少的文件:
opencv编译时缺少的文件-其它文档类资源-CSDN下载包括boostdesc_bgm.i,vgg_generated_48.i,face_landmark更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/m0_62013374/85483791 配置好的opencv4.5.1+contrib(build中除了features2d都删除然后重新编译):