OpenCV+iOS开发使用文档

发布时间:2016-12-9 14:01:24 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"OpenCV+iOS开发使用文档",主要涉及到OpenCV+iOS开发使用文档方面的内容,对于OpenCV+iOS开发使用文档感兴趣的同学可以参考一下。

  一、      前言     OpenCV是开源的跨平台的计算机视觉库,实现了图像处理、计算机视觉和机器学习的很多通用算法。 对于移动设备没有快速输入的键盘,大的屏幕,其优势在于图像和声音,因此要发挥好移动设备的性能,必须很好的利用这一特点。 本文档主要说明如何在iOS系统中使用OpenCV。 二、      开发准备 1.        下载OpenCV for iOS 2.        打开XCode,新建一个工程,例如新建一个Single View Application 3.        在项目中添加下载好的OpenCV库,其中一种添加方式,在新建好的项目中,右键Framework,选择Add Files to,在跳出的窗口中找到opencv 2.framework后 点击add。   4.        最终效果图如下: 5.        因为OpenCV中的MIN宏和UIKit的MIN宏有冲突。所以需要在.pch文件中,先定义OpenCV的头文件,否则会有编译错误。将工程的.pch文件内容修改成如下所示:             #ifdef __cplusplus          #import <opencv2/opencv.hpp> #endif 6.        在使用OpenCV时,主要使用OpenCV的C++接口,为了混合使用C++和Objective-C,需将源文件扩展名为.m的改成.mm。 7.        在iOS中图像的显示主要通过UIImage,在OpenCV中处理通过Mat类型,两者之间要进行转换,显示通过UIImage,处理通过Mat。转换写成一个公共类文件UIImageCVMatConverter.mm,添加到项目中,具体见附件。 8.        在使用到OpenCV的地方跟原C++一样。 三、      测试项目 对基本的图像处理算法进行测试给出原图,测试效果图,处理时间,代码。 1.        建议对图像处理部分单独建一个类,将设计与处理分开。 2.        打开.h头文件,直接引用C++的OpenCV库,添加要实现的方法,具体如下: 3.        在.mm文件中具体实现,实现的部分代码如下: 4.        Objective-C调用,在头文件中添加类似下面的方法,传入参数为待处理图像、处理方法的序号 -(UIImage *)processImage:(UIImage *)inputImage number:(int)useNumber; 具体实现如下: -(UIImage *)processImage:(UIImage *)inputImage number:(int)useNumber {     cv::Mat inputMat = [UIImageCVMatConverter cvMatFromUIImage:inputImage];     cv::Mat resultMat;     //这边到时构建一个字典,将序号转成调用名     switch (useNumber)     {         case 0:             resultMat =[self cannyConversion:inputMat];             break;         case 1:             resultMat =[self equalizeHistConversion:inputMat];             break;         case 2:             resultMat =[self harrisConversion:inputMat];             break;         case 3:             resultMat =[self siftConversion:inputMat];             break;         case 4:             resultMat =[self surfConversion:inputMat];             break;                     default:             break;     }     inputMat.release();     return [UIImageCVMatConverter UIImageFromCVMat:resultMat]; } 5.        设计界面,调用上述处理函数                      i.            添加toolbar和imageview设计界面如下:         ii.      设置关联,如下图:       iii.      调用的过程 1.   获得加载图片的UIImage,本例如下: NSString *fileName = [[NSBundle mainBundle] pathForResource:@"fruits" ofType:@"jpg"];            imageView.image = [UIImage         imageWithContentsOfFile:fileName];                     imageView.contentMode = UIViewContentModeScaleAspectFit;                      loadImage = imageView.image; 将加载的图片的UIImage给上述中的loadImage,loadImage进行转换到Mat 2.   处理 直接调用之前写好的ImageProcessing类 imageView.image = [imageProcessing processImage:loadImage  number:numberOfprocess ]; 四、   实验结果 算法名 Canny Harris SIFT SURF 测试时间ms 9 40 176 143 实验效果 五、   参考 1.        http://blog.sciencenet.cn/home.php?COLLCC=3456986939&COLLCC=3456885714&mod=space&uid=702148&do=blog&quickforward=1&id=657754%E5%9C%A8Mac%E4%B8%8B%E4%BD%BF%E7%94%A8OpenCV%EF%BC%8C 2.        http://blog.devtang.com/blog/2012/10/27/use-opencv-in-ios/ 3.        https://github.com/aptogo/OpenCVForiPhone  

上一篇:Mac下OpenCV开发
下一篇:算法起步之拓扑排序

相关文章

相关评论