因对OpenCV版本有所要求,所以需要将OpenCV3.4卸载,重新安装4.4.0版本。
注:ROS原本会有自带的OpenCV,记得不要把它删了,只删你自己另外加的库,不然后续运用ROS中的一些功能包的时候会因为找不到原来自带的Opencv而崩盘。
哦,好像NVIDIA Xavier NX也自带OpenCV4.5,嗯,我基本全删完了,已经找不到原来自带的版本了。
后续出现问题再解决吧,后续有问题最多也是更改版本重新编译和多OpenCV多版本共存的问题,小事情。本来科研路上的问题就是一个接着一个,然后又一个接着一个…
文章发布20天后我后悔了,真的就不小心系统原来的opencv删了,诶,准备刷机。
20211223:再提醒一次,linux系统是可以多版本OpenCV共存的,可以不用卸,每次编译的时候指定一下即可,OpenCV其实就只是个包,卸不卸本质影响只是空间而已;如果实在不想要这个版本再考虑卸。
sudo make uninstall
cd ..
sudo rm -r build
sudo rm -r /usr/local/include/opencv2
sudo rm -r /usr/local/include/opencv
sudo rm -r /usr/include/opencv
sudo rm -r /usr/include/opencv2
sudo rm -r /usr/local/share/opencv
sudo rm -r /usr/local/share/OpenCV
sudo rm -r /usr/share/opencv
sudo rm -r /usr/share/OpenCV
sudo rm -r /usr/local/bin/opencv*
sudo rm -r /usr/local/lib/libopencv*
sudo rm -r usr/bin/opencv*
sudo rm -r /usr/lib/libopencv*
注:前四行命令中的opencv2,有些有可能自己命名了opencv4,在相关目录下删除掉跟opencv相关的文件夹就可以。
pkg-config opencv --libs
pkg-config opencv --modversion
出现No package ‘opencv’ found
即可。
如果出现其他信息,则:
sudo apt-get autoremove opencv-doc opencv-data libopencv-dev libopencv2.4-java libopencv2.4-jni python-opencv libopencv-core2.4 libopencv-gpu2.4 libopencv-ts2.4 libopencv-photo2.4 libopencv-contrib2.4 libopencv-imgproc2.4 libopencv-superres2.4 libopencv-stitching2.4 libopencv-ocl2.4 libopencv-legacy2.4 libopencv-ml2.4 libopencv-video2.4 libopencv-videostab2.4 libopencv-objdetect2.4 libopencv-calib3d2.4
Reference:CSDN@AI 菌
opencv:https://opencv.org/releases/
opencv_contrib:https://github.com/opencv/opencv_contrib
mkdir build
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
出现问题:Unable to locate package libjasper-dev
解决方法:(主要就是arm架构下是ubuntu-ports
,这一步会导致之前的源没了,记得先保存)
sudo add-apt-repository “deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe”
sudo apt update
sudo apt install libjasper1 libjasper-dev
Reference:CSDN@rrr2
cd ~/opencv/build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib/modules/ ..
注:
① /usr/local 是指默认将要 install 的路径
② OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib/modules/ … 是指 opencv_contrib3.4.0 中 modules所在的路径,后面的两点不可省略
在cmake后应该会出现一些文件下载失败,这是因为墙和contrib
的问题,这些文件不解决会导致后面make
和install
失败。
问题1:fatal error: boostdesc_bgm.i: No such file or directory
部分错误示例截图如下(系统只提示了一个,实际上第二张图这些都是缺失的):
解决方法:
step1:根据CmakeDownload.txt文件中的网址,自己“科学上网”或者从别人下载好的资源里修改名字,放进对应的文件夹里,具体可以参考我在Windows下安装OpenCV4的contrib的教程,这里就不赘述了。
step2:再将没有MD5值的下列11个文件,直接把step1的文件去掉前缀即可,放入/home/opencv/opencv_contrib/modules/xfeatures2d/src
路径下(根据自己contrib
的路径做适当的更改,这是我的路径)。
无MD5值的文件名如下:
boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i
step3:重新编译、安装(注:再cmake你就要再配置一次)。
make -j4 // 核数看自己平台决定
sudo make install
注:xdjm,看清楚再操作,那篇文章的评论区一堆没按步骤或者自己粗心没安装成功的。
问题2:fatal error: features2d/test/test_detectors_regression.impl.hpp: No such file or directory
解决方法:直接把opencv / modules / features2d
复制,然后粘贴到build目录中来解决该问题。
最后再次编译:
make -j4 // 核数看自己平台决定
sudo make install
Reference:CSDN@HeyMountain、@g_grace1、@小小谢先生
step1:在ld.so.conf.d文件中加入位置
sudo gedit /etc/ld.so.conf.d/opencv.conf
打开后可能是空文件,在文件内容最后添加:
/usr/local/lib
step2:更新系统库
sudo ldconfig
step3:配置系统.bashrc文件,在其中加入
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
step4:更新.bashrc文件
source ~/.bashrc
pkg-config opencv --modversion # 4.0以下版本
opencv_version # 4.0以上版本
注:
执行pkg-config --modversion opencv查看opencv版本的时候可能会出现问题,需要确保
1.第六步的时候设置了OPENCV_GENERATE_PKGCONFIG=ON
2.上面的PKG_CONFIG_PATH
的变量的值 /usr/local/opencv4lib/pkgconfig
的路径下有opencv.pc文件。若是opencv4.pc,则将该文件名修改为opencv.pc
执行命令
sudo cp opencv4.pc opencv.pc