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

OpenCV-ios开发之一基本配置

2017-03-18 14:27 162 查看
先简单介绍下OpenCV,OpenCV的全称是:Open
Source Computer Vision Library。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。说简单点,OpenCV可以实现人脸识别,检测,当然通过不断地训练,可以实现识别各种不同的物体。

我们可以从官网下载OpenCV-ios版本,目前应该是3.0版本以上了,我目前用的还是opencv2framework,如下图:



然后导入相关的头文件,这里我们用到了camera,如下图:



注意要先导入opencv的头文件,在导入ios相关的系统头文件,不然会报错。这里我们创建一个CvVideoCamera,代码入下:

self.videoCamera = [[CvVideoCamera alloc] initWithParentView:self.imgView];
self.videoCamera.delegate = self;
self.videoCamera.defaultAVCaptureDevicePosition = AVCaptureDevicePositionBack;
self.videoCamera.defaultAVCaptureSessionPreset = AVCaptureSessionPreset1280x720;
self.videoCamera.defaultAVCaptureVideoOrientation=AVCaptureVideoOrientationPortrait;
self.videoCamera.defaultFPS = 30;
self.videoCamera.grayscaleMode = NO;

[self.startButton addTarget:self action:@selector(startPressed:) forControlEvents:UIControlEventTouchUpInside];
然后通过一个代理方法- (void)processImage:(cv::Mat
&)image来获取视频流,代码如下:

-(void) startPressed:(UIButton *)button
{

[self.videoCamera start];

}

- (void)processImage:(cv::Mat &)image
{
cv::Mat   canny_output;//临时变量和目标图的定义
cv::Mat midImage(self.imgView.bounds.size.height, self.imgView.bounds.size.width, CV_8UC1);
//图像处理
cvtColor(image,midImage,CV_BGR2GRAY,0);//将图像转化为灰度图
//GaussianBlur(midImage,midImage,cv::Size(3,3),0,0); //高斯模糊
blur(midImage, midImage,cv::Size(3,3));
Canny(midImage, canny_output, 50,255 );//

//轮廓提取
std::vector<std::vector<cv::Point>> contours;
findContours(canny_output,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE);
//轮廓拣选

image.setTo(cv::Scalar(0,255,0,0),canny_output);
self.imgView.image=MatToUIImage(image);

}

这样就实现了检测物体轮廓的功能,效果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  计算机视觉 opencv ios