1. 程式人生 > >C++開發人臉性別識別教程(3)——OpenCv配置和ImageWatch插件介紹

C++開發人臉性別識別教程(3)——OpenCv配置和ImageWatch插件介紹

下劃線 toc bsp 對話 顯示 調試 詳細 結構 post

  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插件介紹