pencv這個(gè)工具來進(jìn)行圖像處理。大致是使用C++語(yǔ)言編寫程序?qū)崿F(xiàn)識(shí)別算法的實(shí)現(xiàn),所以首先就要進(jìn)行opencv與VS環(huán)境的配置。
Shaine屬于那種半路出家之人都算不上的那種,本科期間三四年來學(xué)習(xí)的真是半吊子,開發(fā)方向的東西完全就是一竅不通。而作為一個(gè)giser,不可避免的會(huì)涉及到開發(fā),也免不了圖形圖像處理的東西,所以,Shaine打算借著畢設(shè)這個(gè)機(jī)會(huì),自己獨(dú)自著手一個(gè)小項(xiàng)目,從需求、現(xiàn)有研究狀況、可引用的經(jīng)典算法等開始,重學(xué)GIS開發(fā),初步學(xué)習(xí)opencv相關(guān)內(nèi)容。
之前花了四五天的時(shí)間來下載、安裝軟件,也按照網(wǎng)上的配置教程進(jìn)行了環(huán)境的配置,在測(cè)試時(shí)各種拋異常,各種引用不正確,就是沒有成功。Shaine當(dāng)時(shí)也是百思不得其解。因?yàn)楸究茣r(shí)只學(xué)了C和C#兩門編程語(yǔ)言,且自身學(xué)的很淺,C++也不懂,這也算是一大障礙吧。無奈,重裝系統(tǒng)后重新開始配置,所以呢,Shaine汲取到的教訓(xùn)就是:
1. 在按照網(wǎng)上教程安裝軟件、配置環(huán)境時(shí),一定要先把整個(gè)流程看完,有個(gè)大致的了解,明白其的原理,切忌按部就班粘貼復(fù)制某些操作步驟中的內(nèi)容,因?yàn)槊總€(gè)人的計(jì)算機(jī)文件夾、命名都是不同的,只有了解其原理時(shí),在32/64位選擇、版本等時(shí)才能對(duì)癥下藥,否則只會(huì)走上不斷重配重裝甚至重裝系統(tǒng)的道路。
2. 每款軟件在計(jì)算機(jī)上盡量只安裝一種穩(wěn)定性、兼容性較高的版本,不要安裝兩個(gè)或者三個(gè)版本來?yè)蝺?nèi)存。Shaine以血的教訓(xùn)告訴大家,當(dāng)時(shí)Shaine就是安裝VS2010/2013/2015三個(gè)不同的版本,你說Shaine是不是吃飽了撐著了?
3. 安裝任何軟件時(shí)不要出現(xiàn)漢字命名的文件夾,不管你是安裝中文軟件還是英文軟件,因?yàn)閷?duì)于英文軟件在安裝時(shí)一旦出現(xiàn)中文名的文件夾,在路徑識(shí)別時(shí)很可能會(huì)出錯(cuò),所以保險(xiǎn)起見,還是乖乖英文命名吧。
4. 在涉及到兩款或者多款軟件在進(jìn)行環(huán)境搭建時(shí),最好先在網(wǎng)上查找一下兩款軟件相互匹配的版本分別是多少后再下載安裝。比如opencv配置VS,opencv3.2就需要vs2015來配置,因?yàn)橹挥衯s2015里面的vc14才能與opencv里面vc相匹配,我們才能直接調(diào)用軟件包里面編譯好的類庫(kù),否則還得自己進(jìn)行手動(dòng)編譯。
好了,Shaine就不在扒拉廢話了,先來談?wù)凮pencv和vs的配置步驟。
一、安裝包的下載與安裝
Opencv可免費(fèi)到官網(wǎng)上去下載,opencv是國(guó)外軟件,在下載是由于受資源的限制,可能會(huì)出現(xiàn)下載緩慢甚至下載失敗的情況,沒事,直接重新下載就是呢。
附上官網(wǎng)鏈接:http://opencv.org/downloads.html
關(guān)于安裝,倒不如說是解壓。如圖,直接解壓到目標(biāo)文件夾下就行啦。
VS2013想必每個(gè)開發(fā)人員都接觸過,也安裝過N多次啦,Shaine在此就不再贅述啦。
二、環(huán)境變量的配置
計(jì)算機(jī)→右鍵屬性→高級(jí)系統(tǒng)設(shè)置→高級(jí)→環(huán)境變量,在用戶變量中,點(diǎn)擊新建,變量名為opencv,變量值為:D:\Software\opencv\build(即你opencv安裝的build文件路徑);系統(tǒng)變量path,點(diǎn)擊編輯,添加D:\Software\opencv\build\x86\vc12\bin。
說明:說明:不管你系統(tǒng)是32位還是64位,路徑目錄均選擇X86,因?yàn)榫幾g都是使用32位編譯。
三、新建Visual C++項(xiàng)目
打開VS,新建項(xiàng)目,選擇模板下的vc++,新建win32控制臺(tái)應(yīng)用程序。跳出應(yīng)用程序向?qū)Вc(diǎn)擊下一步,勾選上附加選項(xiàng)中的空項(xiàng)目,點(diǎn)擊完成。(勾選空選項(xiàng)目的在于為下面的各項(xiàng)設(shè)置建立一個(gè)模板,之后不用每次建項(xiàng)目都進(jìn)行配置了)
在解決方案的源文件中新建c++文件(.cpp文件)。
在屬性管理器中進(jìn)行如下操作:
在Debug|Win32的Microsoft.Cpp.Win32.user處雙擊進(jìn)入屬性頁(yè),進(jìn)行如下設(shè)置:
1、 通用屬性→VC++目錄:
包含目錄中添加:
D:\Software\opencv\build\include\opencv2
D:\Software\opencv\build\include\opencv
D:\Software\opencv\build
庫(kù)目錄中添加:D:\Software\opencv\build\x86\vc12\lib
2、 通用屬性→鏈接器→輸入→附加依賴項(xiàng),在依賴項(xiàng)中輸入lib庫(kù)中的各項(xiàng).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處雙擊進(jìn)入屬性頁(yè),進(jìn)行和Debug中一致的操作,其實(shí)以上都是D:\Software\opencv\build\x86\vc12\lib下所有的lib文件,你會(huì)發(fā)現(xiàn),有的后面帶上d,有的沒有d,這是因?yàn)镈ebug的就有d,Release則沒有d。
四、最終的測(cè)試
Shaine以顯示一張圖片來測(cè)試整個(gè)配置過程的準(zhǔn)確性。
新建一個(gè).Cpp文件,輸入以下代碼:
注意代碼證圖片路徑的輸入格式,本來Shaine中圖片的目錄是這樣的:D:\LiHong\Blind Way Recognition\MyProject\test1_0228 ;但是你注意沒有,整個(gè)路徑的輸入中,所有“\”都變?yōu)榱恕癨\”,就連加入文件名時(shí)也要加上“\\”。
運(yùn)行結(jié)果如下:
至此,整個(gè)配置過程已成功完成。
五、其他說明
在測(cè)試時(shí),你可能會(huì)和Shaine一樣遇到如下問題:
1.VC++中“在查找預(yù)編譯頭使用時(shí)跳過”
出現(xiàn)這種狀況的原因是沒有在cpp文件最前一行添加#include “stdafx.h”,解法有:
法一:去掉預(yù)編譯頭
項(xiàng)目→屬性→配置屬性→C/C++→預(yù)編譯頭→創(chuàng)建使用預(yù)編譯頭→不使用預(yù)編譯頭
法二:將包含文件加到預(yù)編譯頭stdafx.h文件中
法三:在每個(gè).cpp中包含預(yù)編譯頭stdafx.h文件
注意:#include “stdafx.h”一定要添加到cpp文件的第一行。
2.調(diào)試解決方案后會(huì)出現(xiàn)一堆類似于window\SysWOW64\gdi32.dll無法查找或打開PDB文件的問題,這是由于.dll庫(kù)沒有正確的鏈接進(jìn)去以至于調(diào)試時(shí)無法調(diào)用相關(guān)類
調(diào)試→選項(xiàng)和設(shè)置→調(diào)試→常規(guī)→勾選上“啟用資源服務(wù)器”
調(diào)試→選項(xiàng)和設(shè)置→調(diào)試→常規(guī)→勾選上“微軟符號(hào)服務(wù)器”
其實(shí)到了最后,Shaine哪怕把整個(gè)測(cè)試項(xiàng)目已經(jīng)運(yùn)行起來了,但還是存在少數(shù)dll無法調(diào)用的情況。Shaine也是很頭疼和郁悶,還要不斷的找原因哦。
備注:Shaine在試驗(yàn)多次之后,老是報(bào)下圖中的錯(cuò),后來請(qǐng)教了一位學(xué)長(zhǎng),原因是配置次數(shù)過多,然后可能引起了附加依賴項(xiàng)的錯(cuò)誤,采取了把附加依賴項(xiàng)中的內(nèi)容刪掉之后重新添加一遍,并不勾線左下角的選項(xiàng),保存設(shè)置及VS,關(guān)閉項(xiàng)目,重新打開即可解決問題。
琴瑟在御,歲月靜好!