OpenCV是什么,相信搞機(jī)器視覺(jué)的朋友都清楚。但是很多搞機(jī)器視覺(jué)的朋友卻是對(duì)他又愛(ài)又恨。愛(ài)它因?yàn)樗敲赓M(fèi)的,如果能夠好好掌握它,并運(yùn)用到自己的機(jī)器視覺(jué)項(xiàng)目中,還是可以一定程度上降低項(xiàng)目成本。恨它是因?yàn)樗惶脤W(xué)習(xí)。原因有以下幾個(gè): 1、國(guó)內(nèi)有關(guān)OpenCV的中文著作太少了,就2本,而且還是1.1版本的,已經(jīng)和現(xiàn)在最新版本2.4.3差別太大,就算是學(xué)習(xí)了,過(guò)渡到最新版也要花一定的時(shí)間和精力。 2、直接學(xué)習(xí)較高版本,可是沒(méi)有相應(yīng)的教程可以參考。直接看英文版本的幫助文檔吧,對(duì)于英文不好的朋友,難度很大。 3、就算是英文可以的朋友,該如何高效的學(xué)習(xí)OpenCV,估計(jì)有些人也沒(méi)有一個(gè)良好的方法,導(dǎo)致學(xué)習(xí)效果不好。 為了幫助那些想學(xué)OpenCV卻又不得法的朋友,本人姑且把自己自學(xué)OpenCV的一點(diǎn)點(diǎn)經(jīng)驗(yàn)?zāi)贸鰜?lái)分享一下,希望能夠幫到有需要的朋友。已經(jīng)掌握了良好學(xué)習(xí)方法并且已經(jīng)一定程度掌握OpenCV的朋友,還希望不要吐槽。 1、先去下載最新版OpenCV,網(wǎng)址如下:http://nchc.dl./project/opencvlibrary/opencv-win/2.4.3/OpenCV-2.4.3.exe。下載完成后解壓到相應(yīng)目錄。本人解壓到D:\Program Files\OpenCV2.4.3。 2、有的文章提到使用CMake把OpenCV下面的范例生成為Visual Studio的工程,此處我沒(méi)有這樣做。直接使用范例。這里先把OpenCV目錄下面的幾個(gè)重要目錄做個(gè)說(shuō)明(見(jiàn)附件): doc目錄:主要包含OpenCV的幫助文檔。其中opencv2refman.pdf主要是OpenCV的各種類和函數(shù)的使用說(shuō)明。opencv_tutorials.pdf,主要是下面教學(xué)代碼目錄里面各個(gè)教學(xué)范例的簡(jiǎn)單講解。opencv_cheatsheet.pdf主要是最常用OpenCV類和函數(shù)的集合。此3個(gè)PDF文檔對(duì)自學(xué)者幫助最大。 samples\cpp\tutorial_code目錄:里面包含基本教學(xué)代碼。和上面的opencv_tutorials.pdf文檔遙相呼應(yīng),構(gòu)成一個(gè)完整的自學(xué)體系。 build目錄:包含編譯,調(diào)試,發(fā)布所需要的各類動(dòng)態(tài)庫(kù),靜態(tài)庫(kù),頭文件等。 因?yàn)镺penCV2.4.3好像只支持Visual Studio 2008以上版本,我在這里以Visual Studio 2008為例講解如何讓范例跑起來(lái)。 1、添加環(huán)境變量:見(jiàn)圖片。此處我在path環(huán)境變量中添加如下目錄:D:\Program Files\OpenCV2.4.3\build\x86\vc9\bin。記住在前面一個(gè)目錄后面加分號(hào)。 2、在Visual Studio中包含頭文件目錄:見(jiàn)附件中的圖片,已經(jīng)用紅色矩形框標(biāo)識(shí)如何操作。 3、在Visual Studio中包含庫(kù)文件目錄:見(jiàn)附件中的圖片,已經(jīng)用紅色矩形框標(biāo)識(shí)如何操作。 4、建立一個(gè)新建Visual Studio VC win32控制臺(tái)應(yīng)用工程,這里我選擇帶預(yù)編譯頭的工程,省去添加cpp文件的工作。 5、代碼創(chuàng)建:這里我選擇samples\cpp\tutorial_code\ImgProc\Morphology_2.cpp文件。先添加包含目錄,如下(以后所有范例均可以如下添加): #include <opencv2/opencv.hpp> #include <stdio.h> 然后復(fù)制代碼,見(jiàn)附件: 6、編譯文件:自然少不了要包含靜態(tài)庫(kù),要添加的庫(kù)(debug版和release差別就是文件名后多了一個(gè)d標(biāo)識(shí)是debug版)如下: debug版 opencv_calib3d243d.lib opencv_contrib243d.lib opencv_core243d.lib opencv_features2d243d.lib opencv_flann243d.lib opencv_gpu243d.lib opencv_haartraining_engined.lib opencv_highgui243d.lib opencv_imgproc243d.lib opencv_legacy243d.lib opencv_ml243d.lib opencv_nonfree243d.lib opencv_objdetect243d.lib opencv_photo243d.lib opencv_stitching243d.lib opencv_ts243d.lib opencv_video243d.lib opencv_videostab243d.lib release版 opencv_calib3d243.lib opencv_contrib243.lib opencv_core243.lib opencv_features2d243.lib opencv_flann243.lib opencv_gpu243.lib opencv_haartraining_engine.lib opencv_highgui243.lib opencv_imgproc243.lib opencv_legacy243.lib opencv_ml243.lib opencv_nonfree243.lib opencv_objdetect243.lib opencv_photo243.lib opencv_stitching243.lib opencv_ts243.lib opencv_video243.lib opencv_videostab243.lib 添加方法見(jiàn)附件。 7、字符集設(shè)置:如果編譯過(guò)程中出現(xiàn)如下錯(cuò)誤: 不能將參數(shù) 1 從“_TCHAR *”轉(zhuǎn)換為“const std::string &”原因如下: 無(wú)法從“_TCHAR *”轉(zhuǎn)換為“const std::string”。請(qǐng)字符集設(shè)置為“使用多字節(jié)字符集”,設(shè)置方法見(jiàn)附件。 8、最后指定命令后參數(shù):方法見(jiàn)附件。這樣就可以不用在windows命令行下輸入?yún)?shù)了,方便調(diào)試,但是要注意,圖片必須放在你所建立的工程目錄下(和.cpp以及.h文件同一目錄)。否則就要加上相應(yīng)的路徑。如果參數(shù)多于1個(gè),請(qǐng)以空格分開(kāi)。 9、支持所有參數(shù)設(shè)置完成,開(kāi)始編譯運(yùn)行吧。 如果Visual Studio無(wú)問(wèn)題的話,按照以上按部就班操作,每個(gè)范例均可以正常運(yùn)行。 學(xué)習(xí)OpenCV 2.4.3,不要先急著敲代碼,應(yīng)該要先把它的代碼運(yùn)行一遍,看看是什么結(jié)果。先知道運(yùn)行結(jié)果,再逆向推導(dǎo)編程思路,最后看代碼,分析代碼,把每一個(gè)OpenCV類和函數(shù)的功能作用搞清楚,形成自己的思路,最后拋開(kāi)原來(lái)的代碼,按照自己的思路,把代碼敲進(jìn)去,這樣才能實(shí)現(xiàn)消化吸收。 當(dāng)然每個(gè)人的學(xué)習(xí)方法未必相同,或許別人有自己的獨(dú)特的學(xué)習(xí)OpenCV的更好方法。如果是這樣的話,不妨拿出來(lái)分享一下。 最后,要學(xué)好OpenCV并利用OpenCV做機(jī)器視覺(jué)項(xiàng)目,僅靠OpenCV提供的API是不夠,還需要補(bǔ)充一定的數(shù)字圖像處理的基礎(chǔ)知識(shí),不求自己寫(xiě)處理算法,但是每個(gè)OpenCV處理算子的功能,應(yīng)用范圍,是要清楚的,只有這樣,才在具體的應(yīng)用中知道該使用什么樣的API。 以上就是我目前自學(xué)OpenCV 2.4.3的一點(diǎn)點(diǎn)心得,拿出來(lái)和大家分享一下。如果是OpenCV高手,還煩請(qǐng)口下留情,少吐槽,多指點(diǎn)。如果能夠幫助到新手,我甚感欣慰。 |
|
來(lái)自: xiaofenglib > 《收藏》