Ubuntu下OpenCV2和OpenCV3共存的方法

  由于OpenCV3在OpenCV2的基础上改动比较大,且向下支持不够好,所以,很多老工程需要用OpenCV2,而新工程又仅支持OpenCV3。如果两者同时安装也不冲突,本质上也就是一些三方库,放在/usr/local/lib下面,但是如果使用FIND_PACKAGE(OpenCV REQUIRED)的时候,其本质是去/usr/local/share下面寻找cmake文件,而两个版本的cmake文件同名,所以必然是后安装的版本覆盖前安装版本的cmake文件,这样一来使用起来就不太方便了(需要修改成普通的添加三方库的方法来使用),下面分享一个小方法使得其可以更方便使用。

    默认大家已经有自己编译安装好的OpenCV(这里假设是OpenCV2)
    下载OpenCV3的源码 opencv3.2 我选择了最新的3.2版本,和3.1差别不大。
    使用cmake-gui将CMAKE_INSTALL_PREFIX修改成/usr/local/opencv3。
    之后generate,再make和sudo make install,在对应目录下就有OpenCV3的头文件和库文件了。

    到这里就将现版本的OpenCV和原有版本的OpenCV安装在不同的目录,相对应的cmake文件也被安装在不同目录。那么在CMakeList文件里面使用OpenCV3时,在FIND_PACKAGE(OpenCV REQUIRED)的前面,

set(OpenCV_DIR "usr/local/opencv3/share/OpenCV3"

这样系统就能够找到OpenCV3的头文件和库了,如果继续使用OpenCV2,不添加这句,系统会去默认目录/usr/local/share下面找OpenCV2即可。

Q1:如果出现libopencv_XXX.so.3.2: cannot open shared object file: No such file or directory,怎么办?
A1:

    进入目录:/etc/ld.so.conf.d、
    打开(创建)Opencv.conf
    添加 /usrlocal/opencv3/lib
    执行ldconfig即可。

Q2:如果头文件里面出现某个函数未声明的问题。

A1: 这是因为Opencv3不能很好的对Opencv2进行兼容,需要使用Opencv3的头文件,如果是使用Qt Creator,那就在pro文件内增加

INCLUDEPATH += /usr/local/opencv3/include/
 
---------------------  
作者:Zuo丶  
来源:CSDN  
原文:https://blog.csdn.net/u012423865/article/details/77185789  
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/qiqzhang/article/details/83546414