本文用于记录opencv共存设置过程以及踩过的坑
环境:Ubuntu 20.04
按照csdn上其他博客说法,自带版本为opencv4,但之前因为不懂版本设置等原因,在需要更低版本时,没有将opencv3 以及2和4分开安装,按照网上的说法可能引起不必要的混乱,事实也确实如此。
一. 完全卸载opencv
sudo make uninstall
cd ..
sudo rm -r build
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*
似乎没完全删除
使用find /usr iname opencv
find /usr iname opencv4
find /usr iname opencv3.4
(之前安过3.4)find /usr iname opencv2
找到所有相关文件夹删除。
下面这条命令似乎可以把所有依赖都一起检测出来,并可以逐项悬着是否删除(由于对opencv依赖以及文件细节并不了解,没有尝试)
sudo find / -name "*opencv*" -exec rm -i {} \;
二.官网下载源码并编译
https://opencv.org/
我下载了opencv4.4.0 opencv3.4.10 opencv2.4.13.5
git clone https://github.com/opencv/opencv.git #opencv 4和3 版本在下面的图片中自己选一下
git clone https://github.com/opencv/opencv/archive/refs/tags/2.4.13.5.zip #opencv 2
常规编译如下
进入相应版本的opencv包中
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv2.4.1 -D OPENCV_GENERATE_PKGCONFIG=ON -D WITH_CUDA=OFF ..
make -j4
sudo make install
注意不常规的地方cmake后面那一大堆,这个很重要
1
这条是不使用cuda编译,主要是因为我的显卡是3050ti似乎不被opencv2的cuda编译所支持,编译opencv3和4时没问题,可以不加
-D WITH_CUDA=OFF
我是在没有加的情况下出现了这个编译错误
nvcc fatal : Unsupported gpu architecture 'compute_20'
2
这条是为了让pkg-config --modversion opencv
命令可以搜索到opencv版本
-D OPENCV_GENERATE_PKGCONFIG=ON
但如果想搜索到还需要在~/.bashrc文件最后插入如下
gedit ~/bashrc
#Opencv 4.4.0
#export PKG_CONFIG_PATH=/usr/local/opencv4.4.0/lib/pkgconfig
#export LD_LIBRARY_PATH=/usr/local/opencv4.4.0/lib
#Opencv 3.4.10
#export PKG_CONFIG_PATH=/usr/local/opencv3.4.1/lib/pkgconfig
#export LD_LIBRARY_PATH=/usr/local/opencv3.4.1/lib
#Opencv 2.4.13.5
export PKG_CONFIG_PATH=/usr/local/opencv2.4.1/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv2.4.1/lib
source一下以后就可以看到版本了(已经编译完以后的话)
3
该部分同样重要,将opencv不同版本安放在不同的文件夹中(编译3和4时把opencv2.4.1改成相应的版本名即可),目的是分开使用opencv各版本
-D CMAKE_INSTALL_PREFIX=/usr/local/opencv2.4.1
三.多版本切换
将set(OpenCV_DIR /usr/local/opencv3.2.0/share/OpenCV)
和 find_package( OpenCV 3.2 REQUIRED )
替换原有的find_package(OpenCV REQUIRED)
便可以实现切换
#find_package(OpenCV REQUIRED) #使用opencv2
set(CMAKE_PREFIX_PATH /usr/local/opencv3.2.0/share/OpenCV)
# set (OpenCV_DIR "/home/xxx/opencv/opencv-4.2.0/build")
find_package( OpenCV 3.2 REQUIRED ) #使用opencv3.2
此处说明,find里只加opencv似乎时寻找系统安装的版本(似乎是这样,不太敢确定),我的电脑只家opencv会找到opencv4,情况是使用sudo apt-get install 安装了opencv,然后用源码安装的opencv3和2.文章来源:https://www.toymoban.com/news/detail-802802.html
过程大概是这样,做记录用。也希望能对您有多帮助。文章来源地址https://www.toymoban.com/news/detail-802802.html
到了这里,关于多版本opencv共存 删除原系统opencv,安装opencv4.4.0 /3.4.10 / 2.4.13.5的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!