opencv是什麼,相信搞機器視覺的朋友都清楚。但是很多搞機器視覺的朋友卻是對他又愛又恨。愛它因為它是免費的,如果能夠好好掌握它,並運用到自己的機器視覺專案中,還是可以一定程度上降低專案成本。恨它是因為它不太好學習。原因有以下幾個:
1、國內有關opencv的中文著作太少了,就2本,而且還是1.1版本的,已經和現在最新版本2.4.3差別太大,就算是學習了,過渡到最新版也要花一定的時間和精力。
2、直接學習較高版本,可是沒有相應的教程可以參考。直接看英文版本的幫助文件吧,對於英文不好的朋友,難度很大。
3、就算是英文可以的朋友,該如何高效的學習opencv,估計有些人也沒有乙個良好的方法,導致學習效果不好。
為了幫助那些想學opencv卻又不得法的朋友,本人姑且把自己自學opencv的一點點經驗拿出來分享一下,希望能夠幫到有需要的朋友。已經掌握了良好學習方法並且已經一定程度掌握opencv的朋友,還希望不要吐槽。
2、有的文章提到使用cmake把opencv下面的範例生成為visual studio的工程,此處我沒有這樣做。直接使用範例。這裡先把opencv目錄下面的幾個重要目錄做個說明(見附件):
doc目錄:主要包含opencv的幫助文件。其中opencv2refman.pdf主要是opencv的各種類和函式的使用說明。opencv_tutorials.pdf,主要是下面教學**目錄裡面各個教學範例的簡單講解。opencv_cheatsheet.pdf主要是最常用opencv類和函式的集合。此3個pdf文件對自學者幫助最大。
samples\cpp\tutorial_code目錄:裡面包含基本教學**。和上面的opencv_tutorials.pdf文件遙相呼應,構成乙個完整的自學體系。
build目錄:包含編譯,除錯,發布所需要的各類動態庫,靜態庫,標頭檔案等。
因為opencv2.4.3好像只支援visual studio 2008以上版本,我在這裡以visual studio 2008為例講解如何讓範例跑起來。
1、新增環境變數:見。此處我在path環境變數中新增如下目錄:d:\program files\opencv2.4.3\build\x86\vc9\bin。記住在前面乙個目錄後面加分號。
2、在visual studio中包含頭檔案目錄:見附件中的,已經用紅色矩形框標識如何操作。
3、在visual studio中包含庫檔案目錄:見附件中的,已經用紅色矩形框標識如何操作。
4、建立乙個新建visual studio vc win32控制台應用工程,這裡我選擇帶預編譯頭的工程,省去新增cpp檔案的工作。
5、**建立:這裡我選擇samples\cpp\tutorial_code\imgproc\morphology_2.cpp檔案。先新增包含目錄,如下(以後所有範例均可以如下新增):
#include
#include
然後複製**,見附件:
6、編譯檔案:自然少不了要包含靜態庫,要新增的庫(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
新增方法見附件。
7、字符集設定:如果編譯過程**現如下錯誤:
不能將引數 1 從「_tchar *」轉換為「const std::string &」原因如下: 無法從「_tchar *」轉換為「const std::string」。請字符集設定為「使用多位元組字符集」,設定方法見附件。
8、最後指定命令後引數:方法見附件。這樣就可以不用在windows命令列下輸入引數了,方便除錯,但是要注意,必須放在你所建立的工程目錄下(和.cpp以及.**件同一目錄)。否則就要加上相應的路徑。如果引數多於1個,請以空格分開。
9、支援所有引數設定完成,開始編譯執行吧。
如果visual studio無問題的話,按照以上按部就班操作,每個範例均可以正常執行。
學習opencv 2.4.3,不要先急著敲**,應該要先把它的**執行一遍,看看是什麼結果。先知道執行結果,再逆向推導程式設計思路,最後看**,分析**,把每乙個opencv類和函式的功能作用搞清楚,形成自己的思路,最後拋開原來的**,按照自己的思路,把**敲進去,這樣才能實現消化吸收。
當然每個人的學習方法未必相同,或許別人有自己的獨特的學習opencv的更好方法。如果是這樣的話,不妨拿出來分享一下。
最後,要學好opencv並利用opencv做機器視覺專案,僅靠opencv提供的api是不夠,還需要補充一定的數字影象處理的基礎知識,不求自己寫處理演算法,但是每個opencv處理運算元的功能,應用範圍,是要清楚的,只有這樣,才在具體的應用中知道該使用什麼樣的api。
以上就是我目前自學opencv 2.4.3的一點點心得,拿出來和大家分享一下。如果是opencv高手,還煩請口下留情,少吐槽,多指點。如果能夠幫助到新手,我甚感欣慰。
如何學習Opencv資料?opencv的安裝使用
opencv是什麼,相信搞機器視覺的朋友都清楚。但是很多搞機器視覺的朋友卻是對他又愛又恨。愛它因為它是免費的,如果能夠好好掌握它,並運用到自己的機器視覺專案中,還是可以一定程度上降低專案成本。恨它是因為它不太好學習。原因有以下幾個 1 國內有關opencv的中文著作太少了,就2本,而且還是1.1版本...
如何開始學習web標準?
1 有html和css基礎 學習本系列教程前,要求您有一定的html和css基礎,製作過網頁,會用 進行網頁布局,這樣學習起來才會很輕鬆。如果您對這些還不懂,建議先學習這些知識,然後再來學習本教程。2 轉變觀念 在以前我們製作 時,總是習慣於先考慮外觀 顏色 字型及布局等所有表現在頁面上的內容。但外...
學習程式設計該如何開始呢?
自從上了大學,在自己的認知中,只有對計算機才有興趣,是為何,雜七雜八的學了一大堆。終於要開始學習程式設計,最為主要的學習方向。說實話,個人還是比較迷茫的,迷茫之處才有可惡之處啊!想了這麼久,做了在這麼久。由於就讀的是高職院校,我認為開始學的還是淺了點,但是這不是我們放慢學習腳步的理由。暑假,兩個月的...