配置OpenCV的版本为3.4.0,下面给出安装包的下载地址:
链接:https://pan.baidu.com/s/1uGMXOCo50tNSints_YEEkg 密码:q2xf
前提:先装好cmake
1、安装依赖项
sudo apt-get install build-essential
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config
sudo apt-get install python-dev
sudo apt-get install python-numpy
注:如果上面依赖的几个包已经安装过了,command中会显示已经是最新版,但是为了避免出错,最好还是都安装一遍。
2、编译安装OpenCV
下载OpenCV压缩包,并将压缩包解压。使用下列命令进行编译安装:
1、cd 到解压缩的文件夹中
2、mkdir build
3、cd build
4、编译OpenCV源码
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
5、安装,这一步耗费的时间可能较长
sudo make install
安装完成之后,可以编写一个测试程序---显示一张图片,测试OpenCV是否安装成功。
test.cpp内容如下:
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc,char **argv)
{
if(argc != 2)
{
std::cout<<"No image data"<<std::endl;
return -1;
}
char *imageName=argv[1];
Mat image=imread(imageName,1);
if(!image.data)
{
std::cout<<"No image data"<<std::endl;
return -1;
}
namedWindow(imageName,CV_WINDOW_AUTOSIZE);
imshow(imageName,image);
waitKey(0);
return 0;
}
CMakeLists.txt的内容如下:
CMAKE_MINIMUM_REQUIRED(VERSION 3.12)
PROJECT(opencv_test)
find_package(OpenCV REQUIRED)
add_executable(test test.cpp)
target_link_libraries(test ${OpenCV_LIBS})
然后编译运行(图片放在编译产生的可执行文件的同级目录下),出现下列结果则安装成功。
上面编译的是最基本的OpenCV,下面介绍一下如何在编译OpenCV的时候指定一些额外的配置。
下面要做的是在编译OpenCV的时候将opencv_contrib编译进去,同时打开qt。
下面的博客中介绍了cmake编译opencv时各个选项的含义:
https://blog.youkuaiyun.com/j_d_c/article/details/53365381
编译命令:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D OPENCV_EXTRA_MODULES_PATH=/..../opencv_contrib/modules/ -D WITH_QT=ON -D CMAKE_INSTALL_PREFIX=/usr/local/ ..
make -j4
sudo make install
上面的opencv_contrib的路径是乱写的,在编译的时候要根据自己的情况修改。
下面介绍一下可能遇到的问题:
问题1:
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
linked by target "opencv_core" in directory D:/Cproject/opencv/opencv/sources/modules/core
linked by target "opencv_core" in directory D:/Cproject/opencv/opencv/sources/modules/core
...
原因是cuda9.0已经不再支持2.0架构。
参考https://blog.youkuaiyun.com/u014613745/article/details/78310916可顺利解决。
问题2:
Unsupported gpu architecture 'compute_20'
参考https://blog.youkuaiyun.com/renhanchi/article/details/80493232可顺利解决。
下面介绍一下如何指定OpenCV的版本,除了按照https://blog.youkuaiyun.com/llfjcmx/article/details/81238766的方法配置环境变量以外,还可以简单粗暴的指定OpenCV_DIR的路径,将其指定到OpenCV的build路径下,该路径下的OpenCVConfig.cmake文件可协助找到你指定的OpenCV的相关库和头文件。
set(OpenCV_DIR "/home/user/data/opencv/opencv-3.3.0/build")
然后,再显示一张图片的时候,不需要做其他任何操作,窗口上有了一排按钮,并且自动支持鼠标的缩放操作。