Opencv2.4.13 與Visual Studio2013 環境搭建配置


 

 

opencv這個工具來進行圖像處理。大致是使用C++語言編寫程序實現識別算法的實現,所以首先就要進行opencv與VS環境的配置。

Shaine屬於那種半路出家之人都算不上的那種,本科期間三四年來學習的真是半吊子,開發方向的東西完全就是一竅不通。而作為一個giser,不可避免的會涉及到開發,也免不了圖形圖像處理的東西,所以,Shaine打算借着畢設這個機會,自己獨自着手一個小項目,從需求、現有研究狀況、可引用的經典算法等開始,重學GIS開發,初步學習opencv相關內容。

之前花了四五天的時間來下載、安裝軟件,也按照網上的配置教程進行了環境的配置,在測試時各種拋異常,各種引用不正確,就是沒有成功。Shaine當時也是百思不得其解。因為本科時只學了C和C#兩門編程語言,且自身學的很淺,C++也不懂,這也算是一大障礙吧。無奈,重裝系統后重新開始配置,所以呢,Shaine汲取到的教訓就是:

1. 在按照網上教程安裝軟件、配置環境時,一定要先把整個流程看完,有個大致的了解,明白其的原理,切忌按部就班粘貼復制某些操作步驟中的內容,因為每個人的計算機文件夾、命名都是不同的,只有了解其原理時,在32/64位選擇、版本等時才能對症下葯,否則只會走上不斷重配重裝甚至重裝系統的道路。

2. 每款軟件在計算機上盡量只安裝一種穩定性、兼容性較高的版本,不要安裝兩個或者三個版本來撐內存。Shaine以血的教訓告訴大家,當時Shaine就是安裝VS2010/2013/2015三個不同的版本,你說Shaine是不是吃飽了撐着了?

3. 安裝任何軟件時不要出現漢字命名的文件夾,不管你是安裝中文軟件還是英文軟件,因為對於英文軟件在安裝時一旦出現中文名的文件夾,在路徑識別時很可能會出錯,所以保險起見,還是乖乖英文命名吧。

4. 在涉及到兩款或者多款軟件在進行環境搭建時,最好先在網上查找一下兩款軟件相互匹配的版本分別是多少后再下載安裝。比如opencv配置VS,opencv3.2就需要vs2015來配置,因為只有vs2015里面的vc14才能與opencv里面vc相匹配,我們才能直接調用軟件包里面編譯好的類庫,否則還得自己進行手動編譯。

好了,Shaine就不在扒拉廢話了,先來談談Opencv和vs的配置步驟。

一、安裝包的下載與安裝

Opencv可免費到官網上去下載,opencv是國外軟件,在下載是由於受資源的限制,可能會出現下載緩慢甚至下載失敗的情況,沒事,直接重新下載就是呢。

附上官網鏈接:http://opencv.org/downloads.html

關於安裝,倒不如說是解壓。如圖,直接解壓到目標文件夾下就行啦。

VS2013想必每個開發人員都接觸過,也安裝過N多次啦,Shaine在此就不再贅述啦。

二、環境變量的配置

計算機→右鍵屬性→高級系統設置→高級→環境變量,在用戶變量中,點擊新建,變量名為opencv,變量值為:D:\Software\opencv\build(即你opencv安裝的build文件路徑);系統變量path,點擊編輯,添加D:\Software\opencv\build\x86\vc12\bin。

說明:說明:不管你系統是32位還是64位,路徑目錄均選擇X86,因為編譯都是使用32位編譯。

 

三、新建Visual C++項目

打開VS,新建項目,選擇模板下的vc++,新建win32控制台應用程序。跳出應用程序向導,點擊下一步,勾選上附加選項中的空項目,點擊完成。(勾選空選項目的在於為下面的各項設置建立一個模板,之后不用每次建項目都進行配置了)

  

在解決方案的源文件中新建c++文件(.cpp文件)。

在屬性管理器中進行如下操作:

 

在Debug|Win32的Microsoft.Cpp.Win32.user處雙擊進入屬性頁,進行如下設置:

1、  通用屬性→VC++目錄:

包含目錄中添加:

D:\Software\opencv\build\include\opencv2

D:\Software\opencv\build\include\opencv

D:\Software\opencv\build

庫目錄中添加:D:\Software\opencv\build\x86\vc12\lib

2、  通用屬性→鏈接器→輸入→附加依賴項,在依賴項中輸入lib庫中的各項.lib文件名稱:

opencv_calib3d2413d.lib

opencv_contrib2413d.lib

opencv_core2413d.lib

opencv_features2d2413d.lib

opencv_flann2413d.lib

opencv_gpu2413d.lib

opencv_highgui2413d.lib

opencv_imgproc2413d.lib

opencv_legacy2413d.lib

opencv_ml2413d.lib

opencv_nonfree2413d.lib

opencv_objdetect2413d.lib

opencv_ocl2413d.lib

opencv_photo2413d.lib

opencv_stitching2413d.lib

opencv_superres2413d.lib

opencv_ts2413d.lib

opencv_video2413d.lib

opencv_videostab2413d.lib

在Releae|Win32的Microsoft.Cpp.Win32.user處雙擊進入屬性頁,進行和Debug中一致的操作,其實以上都是D:\Software\opencv\build\x86\vc12\lib下所有的lib文件,你會發現,有的后面帶上d,有的沒有d,這是因為Debug的就有d,Release則沒有d。

四、最終的測試

Shaine以顯示一張圖片來測試整個配置過程的准確性。

新建一個.Cpp文件,輸入以下代碼:

 

注意代碼證圖片路徑的輸入格式,本來Shaine中圖片的目錄是這樣的:D:\LiHong\Blind Way Recognition\MyProject\test1_0228 ;但是你注意沒有,整個路徑的輸入中,所有“\”都變為了“\\”,就連加入文件名時也要加上“\\”。

 

運行結果如下:

 

至此,整個配置過程已成功完成。

五、其他說明

在測試時,你可能會和Shaine一樣遇到如下問題:

1.VC++中“在查找預編譯頭使用時跳過”

出現這種狀況的原因是沒有在cpp文件最前一行添加#include “stdafx.h”,解法有:

法一:去掉預編譯頭

項目→屬性→配置屬性→C/C++→預編譯頭→創建使用預編譯頭→不使用預編譯頭

法二:將包含文件加到預編譯頭stdafx.h文件中

法三:在每個.cpp中包含預編譯頭stdafx.h文件

注意:#include “stdafx.h”一定要添加到cpp文件的第一行。

2.調試解決方案后會出現一堆類似於window\SysWOW64\gdi32.dll無法查找或打開PDB文件的問題,這是由於.dll庫沒有正確的鏈接進去以至於調試時無法調用相關類

調試→選項和設置→調試→常規→勾選上“啟用資源服務器”

調試→選項和設置→調試→常規→勾選上“微軟符號服務器”

其實到了最后,Shaine哪怕把整個測試項目已經運行起來了,但還是存在少數dll無法調用的情況。Shaine也是很頭疼和郁悶,還要不斷的找原因哦。

 

備注:Shaine在試驗多次之后,老是報下圖中的錯,后來請教了一位學長,原因是配置次數過多,然后可能引起了附加依賴項的錯誤,采取了把附加依賴項中的內容刪掉之后重新添加一遍,並不勾線左下角的選項,保存設置及VS,關閉項目,重新打開即可解決問題。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM