opencv找不到头文件 ubuntu_Ubuntu下opencv 安装与删除配置总结

今天调试了一天的opencv,学会了OpenCV多版本共存的问题,分享一下经验

由于项目中用到了OpenCV3.1版本,而电脑上有很早就装好的opencv2.4.9版本(直接装在/usr/下),和一个opencv4.0.0(装在/usr/local/下,不知道什么时候装的。。),还有一个ros中自带的opencv3.3.1(在ros工程目录下)。

一直不知道这些版本是如何和平共处到现在的。。

第一步,卸载,把原先的几个版本都删了(ros中的那个没删,不敢动)

删除参考的是这个博客:

sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*

第二步,下载对应版本并编译

在编译之前先想好安装在什么地方,例如我想装opencv3.1.0,我就直接把整个文件都安装在/usr/local/opencv310里(之前一直不想改安装路径,直到多版本出现问题了才发现单独开一个目录的好处)。

在CMAKE的时候添加:

cmake -DCMAKE_BUILD_TYPE=Debug -CMAKE_INSTALL_PREFIX=/usr/local/opencv310

然后make一下,在sudo make install一下。然后查看一下/usr/local/opencv310/里面的东西,就明白第一步为什么删那些东西了。

安装到这里就可以结束了,我看别的教程里还要求把配置文件和lib库目录放到系统变量 PKG_CONFIG_PATH和LD_LIBRARY_PATH当中,例如:

其实不用添加也行,添加了我感觉反而会乱。

第三步,编译工程项目

之前说过我要编译的工程里要调用opencv3.1.0,那么在就需要在cmakelist.txt中加入

find_package(OpenCV 3.1 REQUIRED)

这句话如果执行成功会自动为编译缓存中添加OPENCV_INCLUDE_DIRS和OPENCV_LIBRARIES这两个变量,分布代表了opencv的头文件目录和库目录。

如果报错找不到opencv(很大概率找不到,应为根本没安装在默认位置),有两种等效的解决方案。

第一种,手动添加变量:

把find_package(OpenCV 3.1 REQUIRED)注释掉,然后加入:

set(OpenCV_INCLUDE_DIRS /usr/local/opencv310/include;/usr/local/opencv310/include/opencv)

set(OpenCV_LIBRARIES opencv_highgui;opencv_dnn;opencv_imgproc;opencv_superres;opencv_videostab;opencv_video;opencv_viz;opencv_ml;opencv_objdetect;opencv_shape;opencv_stitching;opencv_photo;opencv_imgcodecs;opencv_videoio;opencv_calib3d;opencv_flann;opencv_features2d;opencv_core

)

第二种,手动添加opencv.cmake目录

在执行cmake的时候,添加

-DOPENCV_DIR /usr/local/opencv310/share/OpenCV

就可以了。

不同版本直接切换只需更改相应的安装目录即可。

你可能感兴趣的:(opencv找不到头文件,ubuntu)