如何開始學習OpenCV?

    OpenCV是什麼,相信搞機器視覺的朋友都清楚。可是不少搞機器視覺的朋友倒是對他又愛又恨。愛它由於它是免費的,若是可以好好掌握它,並運用到本身的機器視覺項目中,仍是能夠必定程度上下降項目成本。恨它是由於它不太好學習。緣由有如下幾個:算法

一、國內有關OpenCV的中文著做太少了,就2本,並且仍是1.1版本的,已經和如今最新版本2.4.3差異太大,就算是學習了,過渡到最新版也要花必定的時間和精力。編程

二、直接學習較高版本,但是沒有相應的教程能夠參考。直接看英文版本的幫助文檔吧,對於英文很差的朋友,難度很大。windows

三、就算是英文能夠的朋友,該如何高效的學習OpenCV,估計有些人也沒有一個良好的方法,致使學習效果很差。ide

   爲了幫助那些想學OpenCV卻又不得法的朋友,本人姑且把本身自學OpenCV的一點點經驗拿出來分享一下,但願可以幫到有須要的朋友。已經掌握了良好學習方法而且已經必定程度掌握OpenCV的朋友,還但願不要吐槽。函數

一、先去下載最新版OpenCV,網址以下:http://nchc.dl.sourceforge.net/project/opencvlibrary/opencv-win/2.4.3/OpenCV-2.4.3.exe。下載完成後解壓到相應目錄。本人解壓到D:\Program Files\OpenCV2.4.3。學習

二、有的文章提到使用CMake把OpenCV下面的範例生成爲Visual Studio的工程,此處我沒有這樣作。直接使用範例。這裏先把OpenCV目錄下面的幾個重要目錄作個說明(見附件):ui

doc目錄:主要包含OpenCV的幫助文檔。其中opencv2refman.pdf主要是OpenCV的各類類和函數的使用說明。opencv_tutorials.pdf,主要是下面教學代碼目錄裏面各個教學範例的簡單講解。opencv_cheatsheet.pdf主要是最經常使用OpenCV類和函數的集合。此3個PDF文檔對自學者幫助最大。spa

samples\cpp\tutorial_code目錄:裏面包含基本教學代碼。和上面的opencv_tutorials.pdf文檔遙相呼應,構成一個完整的自學體系。.net

build目錄:包含編譯,調試,發佈所須要的各種動態庫,靜態庫,頭文件等。命令行

由於OpenCV2.4.3好像只支持Visual Studio 2008以上版本,我在這裏以Visual Studio 2008爲例講解如何讓範例跑起來。
一、添加環境變量:見圖片。此處我在path環境變量中添加以下目錄:D:\Program Files\OpenCV2.4.3\build\x86\vc9\bin。記住在前面一個目錄後面加分號。
二、在Visual Studio中包含頭文件目錄:見附件中的圖片,已經用紅色矩形框標識如何操做。
三、在Visual Studio中包含庫文件目錄:見附件中的圖片,已經用紅色矩形框標識如何操做。
四、創建一個新建Visual Studio VC win32控制檯應用工程,這裏我選擇帶預編譯頭的工程,省去添加cpp文件的工做。
五、代碼建立:這裏我選擇samples\cpp\tutorial_code\ImgProc\Morphology_2.cpp文件。先添加包含目錄,以下(之後全部範例都可以以下添加):
#include <opencv2/opencv.hpp>
#include <stdio.h>
而後複製代碼,見附件:
六、編譯文件:天然少不了要包含靜態庫,要添加的庫(debug版和release差異就是文件名後多了一個d標識是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
添加方法見附件。
 七、字符集設置:若是編譯過程當中出現以下錯誤:
不能將參數 1 從「_TCHAR *」轉換爲「const std::string &」緣由以下: 沒法從「_TCHAR *」轉換爲「const std::string」。請字符集設置爲「使用多字節字符集」,設置方法見附件。
八、最後指定命令後參數:方法見附件。這樣就能夠不用在windows命令行下輸入參數了,方便調試,可是要注意,圖片必須放在你所創建的工程目錄下(和.cpp以及.h文件同一目錄)。不然就要加上相應的路徑。若是參數多於1個,請以空格分開。
九、支持全部參數設置完成,開始編譯運行吧。
 
若是Visual Studio無問題的話,按照以上循序漸進操做,每一個範例都可以正常運行。
學習OpenCV 2.4.3,不要先急着敲代碼,應該要先把它的代碼運行一遍,看看是什麼結果。先知道運行結果,再逆向推導編程思路,最後看代碼,分析代碼,把每個OpenCV類和函數的功能做用搞清楚,造成本身的思路,最後拋開原來的代碼,按照本身的思路,把代碼敲進去,這樣才能實現消化吸取。
固然每一個人的學習方法未必相同,或許別人有本身的獨特的學習OpenCV的更好方法。若是是這樣的話,不妨拿出來分享一下。
最後,要學好OpenCV並利用OpenCV作機器視覺項目,僅靠OpenCV提供的API是不夠,還須要補充必定的數字圖像處理的基礎知識,不求本身寫處理算法,可是每一個OpenCV處理算子的功能,應用範圍,是要清楚的,只有這樣,纔在具體的應用中知道該使用什麼樣的API。
以上就是我目前自學OpenCV 2.4.3的一點點心得,拿出來和你們分享一下。若是是OpenCV高手,還煩請口下留情,少吐槽,多指點。若是可以幫助到新手,我甚感欣慰。
相關文章
相關標籤/搜索