標籤:dump 指標 但我 char opencv2 deb 資源 2.4 座標
OpenCv是C++影像處理的重要工具。這個人臉性別識別的項目就是藉助OpenCv進行開發的。
儘管網上已經有了非常多關於OpenCv的配置教程,但出於教程完整性考慮。這裡還是用專門的一篇部落格來介紹OpenCv的詳細配置方法,同一時候也介紹一下OpenCv中的一個強有力的影像處理外掛程式——ImageWatch。
因為這個程式是一年前寫的。當時的OpenCv的最新版本號碼為2.4.9(如今已經更新到了3.0),而且2.4.9版本號碼和3.0版本號碼在配置方法上稍有不同,這裡我仍以2.4.9版本號碼為例來介紹配置方法,有關3.0的新特性以及配置方法大家能夠參考網路資源。
一、OpenCv的下載安裝
首先,給出OpenCv的官方:OpenCv下載。
下載完畢後,得到一個大約300M左右的exe檔案:
雙擊進行開始安裝,輸入安裝位置。單擊Extractbutton:
安裝過程實質上就是一個解壓縮的過程:
安裝完畢後存在兩個檔案夾:build和source。Build檔案夾下主要存放了相關的庫檔案。也就是OpenCv的主體部分。Source檔案夾下主要存放了一些協助文檔和官方提供的資源(比如已經訓練好的分類器等):
二、配置路徑
下載安裝完畢之後, 啟動VS2012。隨意開啟一個項目。我們這裡建立一個空的Win32控制台應用程式。
在當中調用OpenCv:
這裡用紅色底線標記了#include語句,說明當前尚未進行OpenCv配置。OK,接下來開始配置。
1、配置VS路徑
單擊“項目—>屬性”,開啟屬性對話方塊:
在“配置屬性—>VC++檔案夾”節點下,單擊“包括檔案夾”右側的下來button:
選擇OpenCv檔案夾下的include檔案夾路徑:
同理。在“庫檔案夾”中加入lib檔案夾路徑:
這裡有兩點須要說明:
(1)X64。在build目錄下有兩個檔案X86和X64,X86是針對32位windows系統的,X64是針對64位系統的。因為我的電腦是64位win7,所以理所當然選擇了X64,只是須要說明的一點是64位系統下相同能夠使用X86下的檔案。僅僅要將調試器設定為win32就可以。
(2)VC11。
在X86和X64目錄下分別都有三個目錄:V10、V11、V12。當中V10適用於VS2010,V11使用於VS2012,V12適用於VS2013(當時還未公布VS20150)。我們這裡選擇VS11目錄。
接下來在“配置屬性—>連結器—>輸入”節點下,在“附加依賴項”表單中輸入下面OpenCv庫檔案名稱:
opencv_calib3d249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_imgproc249d.lib
opencv_legacy249d.lib
opencv_ml249d.lib
opencv_objdetect249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_contrib249d.lib
opencv_nonfree249d.lib
單擊應用。關閉設定表單。
2、配置環境變數
Windows系統的環境變數差點兒是全部編程軟體必須折騰的地方,由於編譯器在啟動時都會通過環境變數來自己主動讀取搜尋路徑。
至於怎樣開啟環境變數表單這裡就不再贅述,這裡須要將OpenCv的bin(可運行檔案)檔案夾的路徑“”加入到環境變數中:
配置完畢後,重新啟動VS,再次輸入include命令,發如今VS給出的提示列表中出現了“OpenCv2”這一項,初步認定配置完畢:
接下來我們編寫一個小程式來測試OpenCv:讀取F盤根資料夾下的一張彩色圖片。灰階化,然後顯示,代碼
按下F7進行編譯,程式報錯。類型為“error LNK2019: 無法解析的外部符號……”。
這是由於程式預設使用了32位的Debug調試器,而我們配置的是64位的opencv,因此須要使用64位的Debug調試器。單擊工具列“win32”相應的下拉式功能表,選擇組態管理員:
在彈出的表單中單擊“Win32”下拉button,選擇“建立”:
建立平台選擇X64:
單擊確定。關閉設定對話方塊,此時我們已經建立了一個64位的Debug調試器,接下來在調試器欄選擇這個64位調試器就可以:
再次按下F7,編譯成功。F5,調試成功。
Ctrl+F5,程式順利執行,顯示圖片。
三、ImageWatch外掛程式
接下來介紹OpenCv的一個強力的VS輔助外掛程式:ImageWatch。
1、外觀
首先強調一點,ImageWatch必須在調試過程中才幹起作用,要想使用ImageWatch對應的就要給程式設定一些斷點來使程式暫停。首先。給出ImageWatch的外觀:
可以看出,ImageWatch可以即時的顯示出當前程式中的圖片(確切的說是Mat矩陣)資訊,包含尺寸、像素、外觀等等。著無疑給程式的調試帶來了相當的大的便利。
接下來我們具體介紹一下這個外掛程式的功能。
2、ImageWatch外掛程式安裝
首先。給出一篇我之前寫的關於ImageWatch外掛程式教程:ImageWatch教程。
ImageWatch官方協助文檔:協助文檔。
ImageWatch:。
下載完畢後,雙擊安裝就可以。安裝過程中會自己主動識別當前已安裝的編譯器,選擇VS2012就可以。
安裝完畢後,須要手動啟用這個外掛程式。開啟VS,單擊“視圖—>其它表單—>ImageWatch”:
此時再次設定斷點,F5調試。ImageWatch正常工作。
接下來我們介紹它的幾個經常使用功能。
3、經常使用功能
(1)圖片查看
可以即時顯示當前圖片的狀態。縮圖等,這點不必多說:
(2)查看像素資訊
將滑鼠放在右側預覽表單。上方標題列會即時顯示當前滑鼠指標所在像素的位置座標以及像素值、縮放比例(從左往右依次是座標值和像素值、縮放比例):
在預覽表單中按下“Ctrl+滑鼠滾輪”,會對圖片進行放大和縮小。直至放大到能夠看清像素值(彩色映像由三個值,RGB):
4、儲存圖片
ImageWatch能夠方便的將當前的圖片儲存下來。僅僅需在相應表徵圖上單擊右鍵。在捷徑功能表中選擇“Dump to File”就可以:
ImageWatch還有很多其它功能。比像的關聯顯示等等,具體功能請大家參加之前提供的部落格以及官方協助文檔,這裡就不再贅述。
四、總結
這是本套教程準備部分的最後一篇文檔,在接下裡的部落格中我們將開始編寫代碼。
這裡說幾個須要注意的事項:
(1)OpenCv還是建議大家用新版。OpenCv的發展經曆了1.x、2.x,到現在的3.0版。
1.x版本號碼的OpenCv僅僅提供了C語言的介面。當中的全部的API函數都以“cv”開頭,僅僅有結構體,沒有類結構,用Iplimage指標類型表示映像等等。
不等不說,OpenCv的發展趨於完好。2.4系列版本號碼是公認的成熟版本號碼。只是前兩天我在瀏覽OpenCv官網的時候發現在3.0版本號碼中出現了非常多比較新的演算法,比如DeepLearning。因此建議搞影像處理演算法的同行們還是去嘗試使用一下3.0版本號碼吧。
(2)寫教程要多用圖。
這段話可能說得讓大家有些莫名其妙,但我認為有必要拿出來說一說。曾經我寫教程時大多長話連篇、恨不得連代碼都想用語言敘述出來,後來我在翻譯《最全Pycharm教程》的過程中,深深體會到了圖文並茂的重要性,也深深的體會到了歪果仁在編程、敘事方面的嚴謹。
所以我也吸取了經驗,用圖說話,於是你就看到了這篇不到2500字。但有著23張圖的文章,以後的文章也是這樣。不知道大家是否能適應哈。
C++開發人臉性別識別教程(3)——OpenCv配置和ImageWatch外掛程式介紹