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