首先介紹一下OpenCV吧棋凳,OpenCV為基于BSD許可(開源)發(fā)行的跨平臺計(jì)算機(jī)視覺庫诫咱,可運(yùn)行在Linux莫辨、Windows和Mac OS上抒寂。它輕量級而且高效结啼,提供了Python、Ruby屈芜、MATLAB等語言接口郊愧,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺方面的很多通用算法。
安裝
OpenCV安裝的方式有三種:
使用官方的framework
去官網(wǎng)下載https://opencv.org/releases.html 井佑,我下載的最新的3.3.1属铁,后續(xù)的例子都是使用此版本進(jìn)行開發(fā)。
使用CocoaPods安裝
在podfile中加入pod 'OpenCV-iOS'躬翁,然后運(yùn)行pod install就行焦蘑。
下載源代碼編譯
自己去https://github.com/opencv/opencv?下載源碼編譯,這種方式太麻煩了盒发。
使用 OpenCV
首先把下載好的opencv2.framework添加進(jìn)工程中例嘱,并添加上依賴庫。
libc++.tbd
AVFoundation.framework
CoreImage.framework
CoreGraphics.framework
QuartzCore.framework
Accelerate.framework
添加完依賴庫后我們就正式開始了宁舰,因?yàn)镺penCV是C++寫的拼卵,所以引入項(xiàng)目中的文件需要使用Object-C++的兼容方式來寫,具體的做法就是將需要導(dǎo)入OpenCV頭文件的m文件改成mm文件蛮艰。
下面要正式添加代碼了腋腮,在這個例子中我們可以給圖片加一個黑白反向的濾鏡。
第一步是在我們修改成的mm的文件中導(dǎo)入OpenCV的庫印荔。
#import <opencv2/opencv.hpp>
#import <opencv2/imgcodecs/ios.h>
using namespace cv;
然后添加一個UIImageView作為顯示內(nèi)容低葫。
@interface ImageGrayViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
在點(diǎn)擊按鈕里面加上圖片進(jìn)行黑白反轉(zhuǎn)的代碼。
Mat mat_src;
//將UIImage轉(zhuǎn)成Mat
UIImageToMat(self.imageView.image, mat_src);
Mat mat_dst;
//首先將圖片由RGBA轉(zhuǎn)成GRAY
cvtColor(mat_src, mat_dst, COLOR_BGRA2GRAY);
//將處理后的圖片轉(zhuǎn)成可以顯示的圖片
cvtColor(mat_dst, mat_src, COLOR_GRAY2BGR);
self.imageView.image = MatToUIImage(mat_src);
其中Mat是矩陣對象仍律,在OpenCV中一張圖片信息在C++中使用Mat對象來進(jìn)行存儲嘿悬,而在C語言中則使用IplImage指針來存儲,cvtColor就是就是圖片的內(nèi)容進(jìn)行指定格式的復(fù)制水泉。
加上以上代碼后善涨,運(yùn)行后的圖片就會出現(xiàn)下面的效果了窒盐。