OpenCV是一個(gè)開(kāi)源跨平臺(tái)的的計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)庫(kù),可以用來(lái)做圖片視頻的處理、圖形識(shí)別、機(jī)器學(xué)習(xí)等應(yīng)用,本序列將著重記錄在OC語(yǔ)言中的使用
安裝
介紹 OpenCV的安裝有三種方式:
1.github下載源碼編譯?下載地址
2.?使用CocoaPods安裝
在項(xiàng)目podfile中加入pod 'OpenCV-iOS', '~> 3.1',在cmd 下cd 至項(xiàng)目路徑 ?運(yùn)行pod install 等待下載完成.
3.在官方下載framework 下載地址
將下載好的opencv2.framework添加到項(xiàng)目中,并且將OpenCV所需的依賴庫(kù)添加到項(xiàng)目中。
libc++.tbd
AVFoundation.framework
CoreImage.framework
CoreGraphics.framework
QuartzCore.framework
Accelerate.framework
如果要使用攝像頭做視頻處理,還需要添加以下兩個(gè)依賴庫(kù):
CoreVideo.framework
CoreMedia.framework
AssetsLibrary.framework
項(xiàng)目中使用
因?yàn)閛penCV 是C++編寫(xiě),所以我們要在項(xiàng)目中使用需以?Object-C++的兼容方式來(lái)寫(xiě),即在要引入openCV的文件的.m改成.mm即可編譯.
導(dǎo)入頭文件

重要兩個(gè)函數(shù)
? UIImage *image = [UIImage imageNamed:@"test"];
? ? /*
? ? ?UIImage 轉(zhuǎn)換成openCV 使用格式Mat
?? ? openCV 提供方法 UIImageToMat(const UIImage *image, cv::Mat &m)
?? ? 第一個(gè)參數(shù) 輸入的參數(shù)
?? ? 第二個(gè)參數(shù) 轉(zhuǎn)換成的 Mat格式
?? ? */
? ? MatinputImage;
? ? UIImageToMat(image, inputImage);
? ? /************************處理邏輯**********************/
? ? /*
?? ? Mat格式轉(zhuǎn)換成 UIImage
?? ? openCV提供方法 MatToUIImage(const cv::Mat &image)
?? ? 第一個(gè)參數(shù) 輸入的參數(shù)
?? ? 第二個(gè)參數(shù) 轉(zhuǎn)換成的 Mat格式
?? ? */
? ? UIImage*outImage = MatToUIImage(inputImage);
openCV 模塊介紹
core ?
定義了基本數(shù)據(jù)結(jié)構(gòu),包括最重要的Mat和一些其他的模塊
imgproc ?
該模塊包括了線性和非線性的圖像濾波,圖像的幾何變換,顏色空間轉(zhuǎn)換,直方圖處理等等
video ?
該模塊包括運(yùn)動(dòng)估計(jì),背景分離,對(duì)象跟蹤
calib3d ? ?
基本的多視角幾何算法,單個(gè)立體攝像頭標(biāo)定,物體姿態(tài)估計(jì),立體相似性算法,3D信息的重建
features2d ?
顯著特征檢測(cè),描述,特征匹配
objdetect ?
物體檢測(cè)和預(yù)定義好的分類器實(shí)例(比如人臉,眼睛,面部,人,車輛等等)
highgui
視頻捕捉、圖像和視頻的編碼解碼、圖形交互界面的接口
gpu
利用GPU對(duì)OpenCV模塊進(jìn)行加速算法
ml
機(jī)器學(xué)習(xí)模塊(SVM,決策樹(shù),Boosting等等)
flann
Fast Library for Approximate Nearest Neighbors(FLANN)算法庫(kù)
legacy
些已經(jīng)廢棄的代碼庫(kù),保留下來(lái)作為向下兼容