前言
嗯,我闲着没事又在装东西。我本以为装个OpenCV3挺简单的,没想到比4还难装,特此记录。
因为CSDN@worthsen在文章中表示:Nvidia Jetson TX2安装contrib包在调用摄像头调整分辨率时可能会失败,加上自己目前也没有需求,所以没有安装contrib包。
1. OpenCV3.2下载
官方github:https://github.com/opencv/opencv/releases/tag/3.2.0
2. 安装依赖
$ sudo apt-get install build-essential
$ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev # 处理图像所需的包
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
$ sudo apt-get install libxvidcore-dev libx264-dev # 处理视频所需的包
$ sudo apt-get install libatlas-base-dev gfortran # 优化opencv功能
$ sudo apt-get install ffmpeg
3. 编译安装
进入OpenCV3.2.0,创建build
文件夹,进入build
文件夹,直接最简单的命令
cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/install_M/OpenCV3.2.0/ ..
CMAKE_INSTALL_PREFIX=...
这里是指定自己的安装路径。
4. 错误1:
报错:
CMake Error at cmake/OpenCVCompilerOptions.cmake:21 (else):
A duplicate ELSE command was found inside an IF block.
原因:
代码冗余。
解决方法:
找到OpenCVCompilerOptions.cmake
文件,进入,定位到21行,直接注释掉
重新cmake。
5. 错误2:
报错(此处错误信息是摘抄别人的,非本人路径,错误一致):
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CUDA_nppi_LIBRARY (ADVANCED)
linked by target “opencv_cudev” in directory D:/Cproject/opencv/opencv/sources/modules/cudev
linked by target “opencv_cudev” in directory D:/Cproject/opencv/opencv/sources/modules/cudev
linked by target “opencv_test_cudev” in directory D:/Cproject/opencv/opencv/sources/modules/cudev/test
…(还有很多类似的报错语句)
原因:cuda高版本不支持2.0架构
解决方法:
见dalao文章
- https://blog.csdn.net/u014613745/article/details/78310916
- https://blog.csdn.net/qq_60225495/article/details/120473250
然后重新编译cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/install_M/OpenCV3.2.0/ ..
6. 继续编译
当cmake
成功后(成功标志如下图所示),继续make -j4
(j后面的数字是核数,根据自己的系统更改),这个过程要挺久的。
7. 错误3:
报错:
fatal error: LAPACKE_H_PATH-NOTFOUND/lapacke.h: No such file or directory #include “LAPACKE_H_PATH-NOTFOUND/lapacke.h”
原因:
没找到lapacke.h头文件。
解决方法:
step1:sudo apt-get install liblapacke-dev checkinstall
step2:进入opencv_lapack.h
文件,修改
将原来的:#include "LAPACKE_H_PATH-NOTFOUND/lapacke.h"
修改成:#include"lapacke.h"
重新make -j4
(此处若又重头cmake的话,还是相当于没修改)。
7. 最后安装
直接sudo make install
总结
因为我原本就有OpenCV,这个只是为了共存,所以没有进行环境配置,有需要的xdm麻烦自己搜一下或者看我之前的文章哈。
加油,科研人。
Reference
- https://worthsen.blog.csdn.net/article/details/77893866(@worthsen,Ubuntu16.04下安装OpenCV3.2.0)
- https://blog.csdn.net/u014613745/article/details/78310916(解决一堆linked问题1.0)
- https://blog.csdn.net/qq_60225495/article/details/120473250(解决一堆linked问题2.0)
- https://blog.csdn.net/Dead_Rabbit6_0/article/details/78044754(错误3)