1. 程式人生 > >OpenCV contrib 3.2.0擴充套件模組新增與編譯(VS2017+OpenCV3.2.0)詳解與排坑

OpenCV contrib 3.2.0擴充套件模組新增與編譯(VS2017+OpenCV3.2.0)詳解與排坑


Cmake配置與生成

  1. 安裝cmake

下載地址:https://cmake.org/download/

獲取最新版本cmake-3.8.1-win64-x64.msi可執行程式,不是壓縮包


下載完畢直接執行安裝,只有一個步驟要注意,

選擇‘addCmake to the system PATH for the current user!!!


安裝完成後,即可開啟Cmake


  1. 下載opencv_contrib

OpenCVcontrib下載地址開啟頁面下載 ZIP。(挑選與opencv版本相匹配的contrib版本,我這裡是3.2


解壓縮到自定義目錄(記住了位置,後面要用)(

推薦放在opencv源包source下的modules目錄下,不然有可能出錯。。


  1. Cmake的配置與生成

1填入‘ opencv原始碼的路徑’以及‘準備輸出的目錄(自定義)’

如果還沒下載opencv可以到官網下載,在opencv官網下載壓縮包(格式.exe),解壓縮到自定義目錄。

之後,點選左下方的‘configure’


2彈出視窗,選擇vs對應的版本。我這裡是VS2017Win64(64位的計算機選擇Win64,否則預設為32位,根據自己的安裝選擇)


預設選項‘use default native compliers’,點選‘finish’。


3)此時,重新編譯opencv

開始執行,這需要花費一點時間。

完成會出現視窗如下:命令列顯示‘Configuring done’表示成功!

滑動中間窗格找到‘OPENCV_EXTRA_MODULES_PATH’新增‘剛剛下載的 opencvcontrib-master包下的modules資料夾’路徑。


然後,在點左下方的’Generate‘按鈕。‘generating done’表示生成成功!!!

⚠️補充,在生成過程中可能出現找不到或是下載不了‘opencv3.2protobuf-cpp-3.1.0.tar.gz

解決辦法是:自己根據上述地址手動下載該檔案,然後將編譯時下載的檔案替換掉。根據上述程式碼可知,如果該檔案存在,就不會再去下載。

這裡附上下載連結親測有效。。。

【連結】opencv3.2protobuf-cpp-3.1.0.tar.gz

4)開啟輸出目錄,找到OpenCV.sln檔案,即表示cmake已完成配置與生成。


VS編譯生成installer

  1. 開啟輸出目錄,找到OpenCV.sln檔案,雙擊開啟。

第一次開啟,需要重新生成解決方案如圖所示。(需要還蠻久的時間)


  1. 全部生成成功後,按下圖操作生成install
  1. 生成成功。

開啟同名路徑,找到install包,包下是與opencv源包build相似的檔案構架。


重新配置OpenCV,include\libraries\附加依賴項。

  1. 新建一個專案


Ok--下一步。。。。唯一要注意的地方就是:‘空專案’。


在原始檔下,新建項。


  1. 開啟屬性管理器:修改包含目錄,庫目錄。


在側邊欄找到Debug|x64包下的Microsoft.Cpp.x64.user右鍵‘屬性’


刪掉原有包含目錄,改為如圖所示的三個新目錄。


刪掉原有庫目錄,改為如圖所示目錄。


完事之後,記得點選應用,確定。

  1. 再一次開啟屬性頁:修改附加依賴項

(因為,這玩意要手打輸入,我在這裡給出。。。你們粘一下)(可以通過命令列程式cmd的命令得到lib檔案下所有的檔名,詳細做法可以見我的另一篇博文)

新增內容:(其實就是之前install/…/lib下的內容

opencv_aruco320d.lib

opencv_bgsegm320d.lib

opencv_bioinspired320d.lib

opencv_calib3d320d.lib

opencv_ccalib320d.lib

opencv_core320d.lib

opencv_datasets320d.lib

opencv_dnn320d.lib

opencv_dpm320d.lib

opencv_face320d.lib

opencv_features2d320d.lib

opencv_flann320d.lib

opencv_fuzzy320d.lib

opencv_highgui320d.lib

opencv_imgcodecs320d.lib

opencv_imgproc320d.lib

opencv_line_descriptor320d.lib

opencv_ml320d.lib

opencv_objdetect320d.lib

opencv_optflow320d.lib

opencv_phase_unwrapping320d.lib

opencv_photo320d.lib

opencv_plot320d.lib

opencv_reg320d.lib

opencv_rgbd320d.lib

opencv_saliency320d.lib

opencv_shape320d.lib

opencv_stereo320d.lib

opencv_stitching320d.lib

opencv_structured_light320d.lib

opencv_superres320d.lib

opencv_surface_matching320d.lib

opencv_text320d.lib

opencv_tracking320d.lib

opencv_video320d.lib

opencv_videoio320d.lib

opencv_videostab320d.lib

opencv_xfeatures2d320d.lib

opencv_ximgproc320d.lib

opencv_xobjdetect320d.lib

opencv_xphoto320d.lib


  1. 新增環境變數

複製目錄:


增加環境變數到Path


整個開發環境部署完工!!!

但是要注意,每次執行專案時要重新設定Debug為‘x64’,否則會報錯。


附贈測試程式碼:(圖片路徑自行修改)

#include<opencv2/opencv.hpp>

#include<iostream>

using namespace cv;

int main(int argc,char** argv) {

Matsrc = imread("E:/image/lena.bmp");

if(src.empty())

{

printf("couldnot load image...\n");

return-1;

}

namedWindow("inputimage", CV_WINDOW_AUTOSIZE);

imshow("inputimage", src);

waitKey(0);

return0;

}

可以顯示圖片就代表,一切部署成功了,撒花!