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)文件夾下就行啦。

萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

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位編譯。

 萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

三、新建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)行配置了)

 萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn) 

萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

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

在屬性管理器中進(jìn)行如下操作:

 萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xù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文件,輸入以下代碼:

萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn) 

注意代碼證圖片路徑的輸入格式,本來Shaine中圖片的目錄是這樣的:D:\LiHong\Blind Way Recognition\MyProject\test1_0228 ;但是你注意沒有,整個(gè)路徑的輸入中,所有“\”都變?yōu)榱恕癨\”,就連加入文件名時(shí)也要加上“\\”。

 萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

運(yùn)行結(jié)果如下:

萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn) 

至此,整個(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也是很頭疼和郁悶,還要不斷的找原因哦。

 萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

備注: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)目,重新打開即可解決問題。

 萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

 

琴瑟在御,歲月靜好!