學習OpenCV的學習筆記系列之-- 環境配置,opencv學習筆記
要想學好OpenCV,首先當然要知道怎麼配置環境了。以本人的配置環境為例,步驟如下。
第一步 下載及解壓OpenCV源碼
雖然很多第三方網站及一些學習論壇會提供OpenCV的源碼下載,但是還是推薦到官網進行下載,這樣可以避免很多麻煩!(病毒?木馬?你懂得!)
官網的如下:
http://opencv.org/downloads.html
在此地址的介面上可以找到最新版本的OpenCV源碼。我使用的是2014-04-25更新的2.4.9版本(目前最新),根據自己的系統選擇對應的源碼版本。
因為我的電腦是WIN7x64Bit的,所以選擇“OpenCV for Windows”這個連結下載。
下載完成後,就可以見到這個exe的代碼解壓縮程式了
雙擊進入解壓程式,選擇解壓目錄,此處選擇的是G盤
點擊“Extract”按鈕,程式就會自動將OpenCV的原始碼解壓到G的“opencv”目錄下(這個目錄是自己產生的,不需要在釋放程式裡寫出來!)。
在“G:\opencv”目錄下,我們可以看到有“build”檔案夾及“source”兩個檔案夾。
第二步 配置OpenCV系統變數路徑
在安裝完OpenCV的原始碼之後,就要開始配置OpenCV的系統路徑了。
在開始菜單的“電腦”上點擊右鍵選擇“屬性”,在彈出的介面左側點擊“進階系統設定”,然後在“系統屬性”對話方塊中選擇“進階”選項卡
點擊“環境變數”按鈕
在彈出來的“環境變數”對話方塊下方的“系統變數”區,找到“Path”選項,然後雙擊
在彈出來的“編輯系統變數”對話方塊中,在“變數值”這一欄添加(注意是添加,就是在這一欄的最後使用分號隔開後添加)“G:\opencv\build\x86\vc10\bin;”及“G:\opencv\build\x64\vc10\bin;”(如果是32位系統,就可以不用後面這個)。
至此,OpenCV的系統變數的路徑配置完畢。
第三步 VS2010環境配置
開啟Visual Studio 2010,建立一個Visual C++項目,選擇“Win32控制台應用程式”,名字“HelloOpenCV”,位置隨意,然後點擊確定。
在彈出來的“Win32應用程式嚮導”對話方塊中 點擊 “下一步”
在接下來介面的“附加選項”中,勾選“空項目”,然後點擊“完成”。
在“HelloOpenCV”的項目工程介面中,點擊功能表列的“視圖”,選擇“其他視窗”,點擊“屬性管理員”。
在彈出來的“屬性管理員”中找到“Debug | Win32”檔案夾展開,雙擊“Microsoft.Cpp.Win32.user”選項。
在接下來的“Microsoft.Cpp.Win32.user”屬性頁面中找到“通用屬性”下的“VC++目錄”選項,在其右側的“包括目錄”中,點擊“編輯”。
在彈出的“包含目錄”對話方塊中,建立3個包含目錄路徑:
1. G:\opencv\build\include
2. G:\opencv\build\include\opencv
3. G:\opencv\build\include\opencv2
點擊“確定”。
然後如法炮製,在“庫目錄”中添加OpenCV靜態庫的目錄路徑。
不管是不是64位系統,此處只需要添加“G:\opencv\build\x86\vc10\lib”就可以了,沒必要添加“G:\opencv\build\x64\vc10\lib”,除非你用的編譯器是64位的。
接下來配置動態連結程式庫
在Microsoft.Cpp.Win32.user”屬性頁面中點擊“連結器”中的“輸入選項”,點擊小箭頭,選擇“編輯”。
在彈出的“附加依賴項”對話方塊中添加以下路徑:
opencv_ml249d.lib
opencv_calib3d249d.lib
opencv_contrib249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_imgproc249d.lib
opencv_legacy249d.lib
opencv_objdetect249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_nonfree249d.lib
opencv_ocl249d.lib
opencv_photo249d.lib
opencv_stitching249d.lib
opencv_superres249d.lib
opencv_videostab249d.lib
opencv_objdetect249.lib
opencv_ts249.lib
opencv_video249.lib
opencv_nonfree249.lib
opencv_ocl249.lib
opencv_photo249.lib
opencv_stitching249.lib
opencv_superres249.lib
opencv_videostab249.lib
opencv_calib3d249.lib
opencv_contrib249.lib
opencv_core249.lib
opencv_features2d249.lib
opencv_flann249.lib
opencv_gpu249.lib
opencv_highgui249.lib
opencv_imgproc249.lib
opencv_legacy249.lib
opencv_ml249.lib
這其中,藍色的是偵錯模式下的庫檔案,可以看出其名稱後面都帶一個“d”(代表debug),紅色的是release模式下的庫檔案,都不帶“d”尾碼的。
一般我們在這裡把帶d和不帶d的統統寫在這裡,因為以後建立所有工程時都會繼承這些公用屬性,以後也就不用每個工程都配置一番,省時省力。
第四步 工程測試
在經曆完以上步驟後,最好重啟一下系統,讓我們的一些配置生效,以避免接下來的測試出錯。
在我們建立的“HelloOpenCV”工程的“方案總管”中,右鍵點擊“源檔案”添加一個建立項。
在“添加新項”對話方塊中選擇添加一個“C++檔案(.cpp)”檔案,命名為“main”,點擊“添加”。
在main.cpp檔案中添加如下代碼:
#include <iostream>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>using namespace cv;int main(){// 讀入一張圖片Mat myImg=imread("test.jpg");// 建立一個名為 "HelloOpenCV"的視窗namedWindow("HelloOpenCV");// 顯示視窗imshow("HelloOpenCV",myImg);// 等待10s後視窗關閉waitKey(10000);}
百度一張圖片,改名為“test.jpg”,放入工程檔案目錄,然後編譯,編譯通過後,點擊調試。
效果如下:
至此,所有配置完成並測試通過。接下來,就可以享受OpenCV帶給我們的各種驚喜了。
對於OpenCV的學習方法問題
我是一個opencv beginner,用了它大概幾個月。我的意見是最主要的是你需要opencv來做什麼事情。
如果你著重應用,比如說你希望用opencv來做Image Recognition,你就直接用那部分tutorial的代碼。在用的過程中,你就慢慢會懂得opencv是怎麼運作的。 然後再回去看opencv的有關書籍,或者cookbook,來加深認識。
個人感覺如果不先使用一下,就直接看書的話,理解上會比較困難。
怎學習opencv比較有效率?個opencv老師
從被實驗室推薦OpenCV到使用編程用了一個星期,感覺學習這個跟學習大多數程式工具是一樣的,就是實踐出真知。
1.首先是參考書,推薦你一本比較基礎的,我覺得非常適合上手。
《OpenCV教程——基礎篇》北航出版社
北航的虛擬現實實驗室許多師生都在使用opencv,有相當多的經驗,這書品質相當不錯,簡單易上手。附帶的光碟片中代碼可靠性相當高,有些直接就是某些演算法或問題的實現。
2.然後是學習方法。程式工具的學習與其他課程相當不同。如果為了考試,你大可不必理會這一套,根據考試科目的推薦教科書劃書背重點就好了,再做幾套習題,幾套試卷,答答疑,分數一定不錯。如果為了能夠真正使用,就要求邊學邊用。
3.具體過程:
建議先總覽全書,掌握OpenCV的架構和結構,結合緒論或是概述,瞭解OpenCV的使用方式和用途。一般書上會給出環境配置和需要下載的工具,請嚴格按照書上的要求做。書上推薦用VC++ 6.0,是有道理的,因為這個版本的VC有著相當廣大的使用基礎,CSDN,PUDN等論壇中都有大量的代碼支援。而且國內外師生的使用經驗也很豐富。我曾經使用VS 2008來完成,結果發現環境變數等配置遠比這個要複雜,以後學習過程中出了莫名其妙的問題還要逐步排查。
建議根據章節瞭解每個局部功能,先正確運行書上的例子(光碟片有代碼)。再次基礎上進行功能修改和消化,達到融會貫通。比如書上教會你opencv的映像格式,那麼你需要重點考慮映像資料的讀寫操作,在此基礎上試著插入演算法,對映像進行修改(比如簡單的翻轉、反色等等)。這種方法保證了你吃透了每一個例子,並且能區分關鍵代碼和通用代碼,方便你以後代碼融合使用。你不需要知道每一個函數的實現過程,你只需要知道每個函數的參數是什麼,功能是什麼,有什麼特殊要求(比像格式,參數記憶體配置)。如果不清楚,除了可以參考SDK的說明文檔,或者MSDN,也可以上百度知道或者自己寫簡單的剝離程式測試每個函數。
建議根據某個課題融合你所瞭解的方法,完成一個小小的項目。比如,你做個臉部偵測或是行人檢測。這些東西都有相當成熟的技術,大量的論文,實現方法五花八門。你不必被紛繁的論文所嚇倒,吸收其優秀的演算法思想,去其糟粕取其精,結合你自己的演算法完成任務就行。這樣,你可以在此基礎上撰寫你自己的論文,編寫示範程式來支援你的論文,做實驗程式來測試你的資料。如果你完成了這些步驟,可以說,你的opencv就算入門了。
以上都是我的個人見解,並不具有說服力,只是給喜歡學習程式設計的同學們交流一下。