您的位置:首页 > 移动开发 > IOS开发

[iOS]iOS结合OpenCV做视频流处理或人脸识别

2016-09-26 20:51 337 查看
下面是做好的demo的样子。



然后我来讲一下怎么实现的。

首先去
http://opencv.org/downloads.html
下载OpenCV for iOS

我下载的是3.1版本。链接点进去没反应的自行翻墙一下。

然后将里面的framework直接拖入到iOS工程中。

界面什么的随便搭一下。

头文件引入

#import <opencv2/opencv.hpp>
#import <opencv2/videoio/cap_ios.h>

还要在Build Phases中加入下面这些framework

opencv2

Accelerate

AssetsLibrary

AVFoundation

CoreGraphics

CoreImage

CoreMedia

CoreVideo

QuartzCore

第二个头文件和官方说的不一样,注意一下,官方的比较老了,是错误的。

然后两个变量

@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@property (strong, nonatomic) CvVideoCamera* videoCamera;


然后在viewdidload里面加入这些代码:

self.imageView.layer.borderColor = [UIColor blackColor].CGColor;
self.imageView.layer.borderWidth = 1;

self.videoCamera = [[CvVideoCamera alloc] initWithParentView:self.imageView];
self.videoCamera.delegate = self;//设置代理
self.videoCamera.defaultAVCaptureDevicePosition = AVCaptureDevicePositionBack;//用背面摄像头
self.videoCamera.defaultAVCaptureSessionPreset = AVCaptureSessionPreset352x288; //截取图片大小
self.videoCamera.defaultAVCaptureVideoOrientation = AVCaptureVideoOrientationPortrait;//竖屏
self.videoCamera.defaultFPS = 30;
self.videoCamera.grayscaleMode = NO;


注意使用协议

@interface ViewController ()<CvVideoCameraDelegate>


下面实现代理方法

- (void)processImage:(cv::Mat &)image{
Mat gray;
cvtColor(image, gray, CV_RGB2GRAY);
GaussianBlur(gray, gray, cv::Size(5,5), 1.2,1.2);
Mat edges;
Canny(gray,edges,0,50);
image.setTo(Scalar::all(255));
image.setTo(Scalar(0,128,255,255),edges);
}


里面的代码是我自己写的,你们想怎么修改都可以,反正是对图片进行处理,包括人脸识别都可以在这个函数里面完成。

另外,如果你和我一样升级到了iOS10,xcode8的话,在info.plist里面加上下面这样一段代码,先请求摄像头权限,不然会报错。

参考:
http://docs.opencv.org/2.4/doc/tutorials/ios/video_processing/video_processing.html#opencviosvideoprocessing
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS OpenCV