之前,圖新在新配的工作站上安裝了高版本的OpenCV3,后來(lái)因項(xiàng)目需求,發(fā)現(xiàn)和其他程序版本沖突了,需要將opencv降到2版本,即卸載OpenCV3,安裝OpenCV2。。。
本來(lái)想裝個(gè)雙版本opencv,但是發(fā)現(xiàn)網(wǎng)上大多教程都是先裝低版本再裝高版本的,或者先把低版本卸載了,然后再裝高版本的。。。
哎,沒(méi)辦法,自力更生吧。。。
先把高版本卸了,裝低版本試試吧。。。
系統(tǒng):ubuntu16.04 64位
python:Anaconda3/python2.7
---------------------------------------------卸載高版本------------------------------------------
先說(shuō)些要用的指令,這些都是參照網(wǎng)上的(網(wǎng)址為: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.打開(kāi)文件夾"opencv-2.4.13":
$cd opencv-2.4.*
3.新建一個(gè)文件夾用于存放臨時(shí)文件:
$mkdir release
4.切換到該臨時(shí)文件夾:
$cd release
5.開(kāi)始編譯:
$cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
$make -j4
$sudo make install
6添加到python編譯環(huán)境下(將編譯生成的cv2.so文件拷貝到你的python版本的調(diào)用庫(kù)下,下面是我的環(huán)境設(shè)置,這個(gè)需要根據(jù)你的實(shí)際路徑具體調(diào)整)
$sudo cp /usr/local/lib/python2.7/dist-packages/cv2.so \
~/anaconda3/envs/py2-tf/lib/python2.7/siate-packages
其他后續(xù)配置可參照博客。
---------------------------------------------我是分界線------------------------------------------
報(bào)錯(cuò):
1. cuda錯(cuò)誤:
執(zhí)行以下命令
$cmake -D CMAKE_BUILD_TYPE=Release -D MAKE_INSTALL_PREFIX=/usr/local ..
報(bào)錯(cuò):CUDA_nppi_LIBRARY (ADVANCED)
原因分析:
根據(jù)博客(網(wǎng)址為https://blog.csdn.net/chenhuan20123/article/details/79574046)可知:
是cuda9不再支持2.0架構(gòu),同時(shí)該博客給出解決辦法如下:
解決辦法:
在編譯的命令里面添加一條-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. 庫(kù)連接錯(cuò)誤:libpcre.so.1
```//home/clt/anaconda3/lib/libpcre-1.0.so: undefined reference to `gst_base_src_submit_buffer_list'
解決辦法:
參考網(wǎng)上辦法(具體網(wǎng)址不記得了,回來(lái)找到補(bǔ)上)
$ sudo ln -s ~/anaconda3/lib/libpcre-1.0.so /usr/lib/x86_64-linux-gnu/libpcre-1.0.so
---------------------------------------------我是分界線------------------------------------------
3.. 庫(kù)連接錯(cuò)誤: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庫(kù)內(nèi)的庫(kù)文件版本可opencv2版本不匹配。
解決辦法:
- 移除高版本的libgstapp庫(kù)
$sudo rm -rf ~/anaconda3/lib/libgstapp-1.0.so.0 - 將ubuntu自帶的低版本庫(kù)建立軟連接
$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之前錯(cuò)誤生成的文件
$make clean
5.重新生成make文件
$make -j8
---------------------------------------------我是分界線------------------------------------------
上述全為本人實(shí)際操作,犯錯(cuò)總結(jié),希望對(duì)你有用。
尊重原創(chuàng),如需轉(zhuǎn)載,請(qǐng)注明鏈接出處,謝謝。
最后,希望大家有問(wèn)題留言討論,共同學(xué)習(xí),共同進(jìn)步。