LOADING...

加载过慢请开启缓存(浏览器默认开启)

loading

multi-versions-of-opencv-in-ubuntu

2022/10/21

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