首先介绍一下OpenCV吧,OpenCV为基于BSD许可(开源)发行的跨平台计算机视觉库,可运行在Linux、Windows和Mac OS上。它轻量级而且高效,提供了Python、Ruby、MATLAB等语言接口,实现了图像处理和计算机视觉方面的很多通用算法。
安装
OpenCV安装的方式有三种:
使用官方的framework
去官网下载https://opencv.org/releases.html ,我下载的最新的3.3.1,后续的例子都是使用此版本进行开发。
使用CocoaPods安装
在podfile中加入pod 'OpenCV-iOS',然后运行pod install就行。
下载源代码编译
自己去https://github.com/opencv/opencv 下载源码编译,这种方式太麻烦了。
使用 OpenCV
首先把下载好的opencv2.framework添加进工程中,并添加上依赖库。
libc++.tbd
AVFoundation.framework
CoreImage.framework
CoreGraphics.framework
QuartzCore.framework
Accelerate.framework
添加完依赖库后我们就正式开始了,因为OpenCV是C++写的,所以引入项目中的文件需要使用Object-C++的兼容方式来写,具体的做法就是将需要导入OpenCV头文件的m文件改成mm文件。
下面要正式添加代码了,在这个例子中我们可以给图片加一个黑白反向的滤镜。
第一步是在我们修改成的mm的文件中导入OpenCV的库。
#import <opencv2/opencv.hpp>
#import <opencv2/imgcodecs/ios.h>
using namespace cv;
然后添加一个UIImageView作为显示内容。
@interface ImageGrayViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
在点击按钮里面加上图片进行黑白反转的代码。
Mat mat_src;
//将UIImage转成Mat
UIImageToMat(self.imageView.image, mat_src);
Mat mat_dst;
//首先将图片由RGBA转成GRAY
cvtColor(mat_src, mat_dst, COLOR_BGRA2GRAY);
//将处理后的图片转成可以显示的图片
cvtColor(mat_dst, mat_src, COLOR_GRAY2BGR);
self.imageView.image = MatToUIImage(mat_src);
其中Mat是矩阵对象,在OpenCV中一张图片信息在C++中使用Mat对象来进行存储,而在C语言中则使用IplImage指针来存储,cvtColor就是就是图片的内容进行指定格式的复制。
加上以上代码后,运行后的图片就会出现下面的效果了。