OpenCV(Open Source Computer Vision Library),是一個開源的跨平台的計算機視覺庫,它實現了圖像處理和計算機視覺領域的很多通用算法,可以在多種計算機平台上運行,支持C++、C#、Python等語言,也提供了Ruby、Matlab等語言的接口。OpenCV是基於BSD許可證發布的,因此它可以免費應用於科研或商業領域。
可以在這個地址了解更多以及下載OpenCV安裝包:http://opencv.org, 其GitHub倉庫地址為:https://github.com/opencv/opencv,那里有主倉庫,拓展模塊倉庫和實驗測試倉庫,大家可以看上面的readme文件和代碼來進行學習。
因為我使用的是Mac電腦,懶得每次都要打開windows虛擬機使用Visual Studio編程,所以,決定在os x系統使用xcode來進行編譯運行,下面介紹一下整個流程步驟。
1. 安裝
在OpenCV官網下載的安裝包適用於Linux/Mac,因此需要使用CMake工具來進行編譯安裝,嘗試了幾次,都在最后的鏈接那里失敗了,在StackOverFlow查了下才發現,目前opencv只支持使用xcode6版本的編譯鏈接器,我使用的是xcode7的,為了避免不必要地麻煩,就不采取編譯安裝方式了,去homebrew搜索一下,可以下載:
現在執行"brew install opencv",等待即可安裝完成,安裝后路徑是:/usr/local/opt/opencv3,我們可以設置一個OPENCV3_HOME環境變量,方便以后快速打開這個文件夾。該文件夾下有opencv的核心和擴展模塊,目錄結構如下:
在lib目錄下是opencv的庫,在include目錄下包含了兩個子目錄:opencv和opencv2,opencv里面包含了opencv1.x的核心頭文件,opencv2安裝模塊功能組織,包括核心模塊、圖像處理模塊、2D功能模塊、高層GUI圖像用戶界面模塊、機器學習模塊等。
注意,這里安裝的是3.1.0版本的OpenCV,在官網可以看到,這個版本只支持64位編譯器,如果在windows平台開發,建議選擇現在還很常用的2.4.9版本,隨着64位機基本普及,使用3.0版本更方便,不用再包含一堆的lib了,只要幾個就夠了。
2. 環境配置
開發平台IDE的環境大同小異,基本都是選擇編程語言后就確定了編譯器,然后是頭文件路徑的設定和庫文件路徑的設定讓編譯器能找到就行,然后就可以進行編譯鏈接成最終的可執行文件了,按照這個思想,就不難處理問題了。
2.1 新建xcode項目
一般教程都會新建command line形式的項目,我不太喜歡這樣的單個功能單個項目的形式,這樣學下來就很多項目了,也麻煩,畢竟演示給別人看的時候,用gui軟件形式比命令行軟件形式更好看吧😁,這里新建工程就使用cocoa application形式吧。
打開XCode,新建工程,選擇macOS模式,點擊"cocoa application",下一步,輸入工程名和語言,這里選擇object-c,下一步,選擇工程存放路徑,點擊"done"即可。
2.2 配置工程頭文件和庫文件搜索路徑,如下圖順序所示:
在Library Search Paths記得要加上“$(PROJECT_DIR)”,這樣在工程里添加的庫框架也能搜索到,另外,因為OpenCV使用C/C++編寫的,還需要引入C++動態鏈接庫:
在Build Phase的Link Binary With Libraries下,添加時搜索:"libstdc++",選中后點擊"Add"即可:
最后,再添加對opencv庫的引用,添加完成后如下圖所示:
到這里,開發環境就配置完成了,在visual studio也差不多,都是配置編譯時搜索頭文件和庫文件的路徑,這里就不重復了。
3. 測試opencv功能
這里使用這個工程,主要是為了測試opencv的功能函數,把公共的功能提取出來,然后方便以后移植到android和ios平台下,所有,工程目錄組織如下:
在imgprocess目錄下是通用的圖像處理函數,images目錄是默認實例圖片,其他文件就是cocoa編程的文件了,重點是imgprocess目錄的類文件。
我們再Main.storyboard里搭建大概的用戶界面程序,如下:
ImageView和Button的IBoutlet和IBAction關聯和iOS開發一樣,這里就不多說了。
編寫圖像處理頭文件,如下:
這里特別要注意圈住的地方,需要加上才能編譯連接通過。
這里聲明了一些圖像處理函數,現在來看看cpp文件的實現:
圖像處理部分函數准備好了,現在來驗證一下,這里看看灰度變化怎么樣:
函數如下:
執行結果:
功能沒問題~~
接下去就是其他處理函數的編寫和測試了,測試完成后,基本很小的修改就可以移植到android和ios平台了。
在打開照片文件選擇圖片那里,代碼如下:
好了,在mac平台搭建opencv開發環境到此結束,后面不斷完善先,有時間再補充這部分。