Ubuntu中多版本opencv共存
opencv4有些opencv3没有的新特性,比如标定,但是有些软件和opencv4的兼容又不好
这种时候就需要一个系统存在两个opencv了
参考:https://blog.csdn.net/learning_tortosie/article/details/80594399
安装
正常我们的opencv会安装在/usr/local
下,安装另外一个版本就要换个位置,下载链接:https://opencv.org/releases
以3.4.10为例,就安装在文件内,方便找
cd opencv-3.4.10/
mkdir build
mkdir installed # 用来放安装文件 下面cmake要指定
cd build
cmake \
-DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=~/opencv-3.4.10/installed \
..
make
make install # 这里不加sudo 因为设置安装的路径为home 不是系统文件夹 不加也避免了上述设置错误覆盖了原来的opencv
测试
我系统里安装的是opencv4,上面下载了个opencv3
只需要拿两者的不同点来测试即可,例如CvRect
是opencv3才有的
main.cpp
#include <opencv2/opencv.hpp>
int main(void)
{
CvRect rect;
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(hello_opencv)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE "Debug")
# 使用opencv
set(OpenCV_DIR "~/opencv-3.4.10/build") #注意是build的路径 其中的OpenCVConfig.cmake 告诉cmake应该去哪里找
find_package( OpenCV REQUIRED ) # 不放心的话可以在加上版本
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(${PROJECT_NAME}
main.cpp
)
target_link_libraries(${PROJECT_NAME}
${OpenCV_LIBS}
)
编译通过,说明opencv3可用
将路径设置注释掉,cmake找到了系统中的opencv4,程序报错
说明配置成功了,可以在opencv3和4之间切换了
另外,如果有需要的话可以把路径添加到环境变量中,不过这种设置是一次性的,长期使用要写入~/.bashrc
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:~/opencv-3.4.10/installed/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/opencv-3.4.10/installed/lib