1. 程式人生 > >Ubuntu下opencv 安裝與刪除配置總結

Ubuntu下opencv 安裝與刪除配置總結

今天除錯了一天的opencv,學會了OpenCV多版本共存的問題,分享一下經驗

由於專案中用到了OpenCV3.1版本,而電腦上有很早就裝好的opencv2.4.9版本(直接裝在/usr/下),和一個opencv4.0.0(裝在/usr/local/下,不知道什麼時候裝的。。),還有一個ros中自帶的opencv3.3.1(在ros工程目錄下)。

一直不知道這些版本是如何和平共處到現在的。。

第一步,解除安裝,把原先的幾個版本都刪了(ros中的那個沒刪,不敢動)

刪除參考的是這個部落格:

https://blog.csdn.net/qiaoji6073/article/details/76572801

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*

第二步,下載對應版本並編譯

在編譯之前先想好安裝在什麼地方,例如我想裝opencv3.1.0,我就直接把整個檔案都安裝在/usr/local/opencv310裡(之前一直不想改安裝路徑,直到多版本出現問題了才發現單獨開一個目錄的好處)。

在CMAKE的時候新增:

cmake -DCMAKE_BUILD_TYPE=Debug -CMAKE_INSTALL_PREFIX=/usr/local/opencv310

然後make一下,在sudo make install一下。然後檢視一下/usr/local/opencv310/裡面的東西,就明白第一步為什麼刪那些東西了。

安裝到這裡就可以結束了,我看別的教程裡還要求把配置檔案和lib庫目錄放到系統變數 PKG_CONFIG_PATH和LD_LIBRARY_PATH當中,例如:

https://blog.csdn.net/learning_tortosie/article/details/80594399

其實不用新增也行,添加了我感覺反而會亂。

第三步,編譯工程專案

之前說過我要編譯的工程裡要呼叫opencv3.1.0,那麼在就需要在cmakelist.txt中加入

find_package(OpenCV 3.1 REQUIRED)

這句話如果執行成功會自動為編譯快取中新增OPENCV_INCLUDE_DIRS和OPENCV_LIBRARIES這兩個變數,分佈代表了opencv的標頭檔案目錄和庫目錄。

如果報錯找不到opencv(很大概率找不到,應為根本沒安裝在預設位置),有兩種等效的解決方案。

第一種,手動新增變數:

把find_package(OpenCV 3.1 REQUIRED)註釋掉,然後加入:

set(OpenCV_INCLUDE_DIRS /usr/local/opencv310/include;/usr/local/opencv310/include/opencv)
set(OpenCV_LIBRARIES opencv_highgui;opencv_dnn;opencv_imgproc;opencv_superres;opencv_videostab;opencv_video;opencv_viz;opencv_ml;opencv_objdetect;opencv_shape;opencv_stitching;opencv_photo;opencv_imgcodecs;opencv_videoio;opencv_calib3d;opencv_flann;opencv_features2d;opencv_core
)

第二種,手動新增opencv.cmake目錄

在執行cmake的時候,新增

-DOPENCV_DIR /usr/local/opencv310/share/OpenCV

就可以了。

不同版本直接切換隻需更改相應的安裝目錄即可。