之前,图新在新配的工作站上安装了高版本的OpenCV3,后来因项目需求,发现和其他程序版本冲突了,需要将opencv降到2版本,即卸载OpenCV3,安装OpenCV2。。。
本来想装个双版本opencv,但是发现网上大多教程都是先装低版本再装高版本的,或者先把低版本卸载了,然后再装高版本的。。。
哎,没办法,自力更生吧。。。
先把高版本卸了,装低版本试试吧。。。
系统:ubuntu16.04 64位
python:Anaconda3/python2.7
---------------------------------------------卸载高版本------------------------------------------
先说些要用的指令,这些都是参照网上的(网址为:https://blog.csdn.net/qq_29229045/article/details/78527391):
1.查询已装opencv版本
$pkg-config --modversion opencv
2.卸载已装opencv
$cd /opencv_install_dir/build(release)/
$sudo make uninstall
$cd ..
$rm -rf build(release)/
$cd ..
$rm -rf opencv
3.卸载残留
$ 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*
$ cd /usr
$ find . -name "*opencv*" | xargs sudo rm -rf
---------------------------------------------安装低版本------------------------------------------
参考博客:https://blog.csdn.net/u011557212/article/details/54706966?utm_source=itdadao&utm_medium=referral
1.下载opencv2
$wget https://github.com/Itseez/opencv/archive/2.4.13.zip
2.打开文件夹"opencv-2.4.13":
$cd opencv-2.4.*
3.新建一个文件夹用于存放临时文件:
$mkdir release
4.切换到该临时文件夹:
$cd release
5.开始编译:
$cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
$make -j4
$sudo make install
6添加到python编译环境下(将编译生成的cv2.so文件拷贝到你的python版本的调用库下,下面是我的环境设置,这个需要根据你的实际路径具体调整)
$sudo cp /usr/local/lib/python2.7/dist-packages/cv2.so \
~/anaconda3/envs/py2-tf/lib/python2.7/siate-packages
其他后续配置可参照博客。
---------------------------------------------我是分界线------------------------------------------
报错:
1. cuda错误:
执行以下命令
$cmake -D CMAKE_BUILD_TYPE=Release -D MAKE_INSTALL_PREFIX=/usr/local ..
报错:CUDA_nppi_LIBRARY (ADVANCED)
原因分析:
根据博客(网址为https://blog.csdn.net/chenhuan20123/article/details/79574046)可知:
是cuda9不再支持2.0架构,同时该博客给出解决办法如下:
解决办法:
在编译的命令里面添加一条-D WITH_CUDA=OFF就行了。
$cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_CUDA=OFF -D BUILD_TESTS=OFF ..
---------------------------------------------我是分界线------------------------------------------
2. 库连接错误:libpcre.so.1
```//home/clt/anaconda3/lib/libpcre-1.0.so: undefined reference to `gst_base_src_submit_buffer_list'
解决办法:
参考网上办法(具体网址不记得了,回来找到补上)
$ sudo ln -s ~/anaconda3/lib/libpcre-1.0.so /usr/lib/x86_64-linux-gnu/libpcre-1.0.so
---------------------------------------------我是分界线------------------------------------------
3.. 库连接错误:libgstapp-1.0.so.0
//home/clt/anaconda3/lib/libgstapp-1.0.so.0: undefined reference to `gst_base_src_submit_buffer_list' //home/clt/anaconda3/lib/libgstapp-1.0.so.0: undefined reference to `gst_queue_array_peek_tail' //home/clt/anaconda3/lib/libgstapp-1.0.so.0: undefined reference to `gst_queue_array_pop_tail' collect2: error: ld returned 1 exit status modules/imgproc/CMakeFiles/opencv_perf_imgproc.dir/build.make:621: recipe for target 'bin/opencv_perf_imgproc' failed make[2]: *** [bin/opencv_perf_imgproc] Error 1 CMakeFiles/Makefile2:1393: recipe for target 'modules/imgproc/CMakeFiles/opencv_perf_imgproc.dir/all' failed make[1]: *** [modules/imgproc/CMakeFiles/opencv_perf_imgproc.dir/all] Error 2 Makefile:149: recipe for target 'all' failed make: *** [all] Error 2
原因分析:
可能是anaconda3的lib库内的库文件版本可opencv2版本不匹配。
解决办法:
- 移除高版本的libgstapp库
$sudo rm -rf ~/anaconda3/lib/libgstapp-1.0.so.0
- 将ubuntu自带的低版本库建立软连接
$sudo ln -s /usr/lib/x86_64-linux-gnu/libgstapp-1.0.so.0 ~/anaconda3/lib/libgstapp-1.0.so.0
3.激活软连接
$sudo ldconfig
4.清除make之前错误生成的文件
$make clean
5.重新生成make文件
$make -j8
---------------------------------------------我是分界线------------------------------------------
上述全为本人实际操作,犯错总结,希望对你有用。
尊重原创,如需转载,请注明链接出处,谢谢。
最后,希望大家有问题留言讨论,共同学习,共同进步。