博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenCV For iOS 1: 连接OpenCV 3.0
阅读量:4122 次
发布时间:2019-05-25

本文共 1668 字,大约阅读时间需要 5 分钟。

本文的内容参考Instant OpenCV for iOS结合最新的开发平台完成。

本系列文章采用的的开发环境为:

1)Xcode 6

2)OpenCV for iOS 3.0.0 alpha

接下来Step by Step 说明如何在最新的平台下使用OpenCV,以将一个彩色图片转换为边缘图为例

Step 1:创建一个新的项目

Step 2:在Building phase里面添加opencv2.framework

Step 3:由于openCV采用C++,因此,要在项目中运行c++代码,需要将文件名后缀由.m改成.mm,如上图所示

Step 4:在ViewController.mm中import OpenCV的文件

#import <opencv2/opencv.hpp>

#import <opencv2/imgproc/types_c.h>

#import <opencv2/imgcodecs/ios.h>

由于opencv.hpp并没有包含所以opencv2的文件,所以有一些需要分别import。

Step 5:输入如下代码:

@interface ViewController (){    cv::Mat cvImage;}@property (weak, nonatomic) IBOutlet UIImageView *imageView;@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    CGRect rect = [UIScreen mainScreen].bounds;    self.imageView.frame = rect;        UIImage *image = [UIImage imageNamed:@"road.JPG"];    // Convert UIImage * to cv::Mat    UIImageToMat(image, cvImage);    if (!cvImage.empty()) {        cv::Mat gray;        // Convert the image to grayscale;        cv::cvtColor(cvImage, gray, CV_RGBA2GRAY);        // Apply Gaussian filter to remove small edges        cv::GaussianBlur(gray, gray, cv::Size(5,5), 1.2,1.2);        // Calculate edges with Canny        cv::Mat edges;        cv::Canny(gray, edges, 0, 60);        // Fill image with white color        cvImage.setTo(cv::Scalar::all(255));        // Change color on edges        cvImage.setTo(cv::Scalar(0,128,255,255),edges);        // Convert cv::Mat to UIImage* and show the resulting image        self.imageView.image = MatToUIImage(cvImage);    }        }
中间的过程先不考虑,关键点在使用了两个函数实现iOS下的UIImage和openCV下的cv::Mat格式的转换,从而实现了iOS与OpenCV的有效连接。

测试效果如下:

从上面可以看出,我们可以非常非常简单地在iOS下使用OpenCV。接下来就是理解并使用OpenCV的各个功能算法。

你可能感兴趣的文章
12 个JavaScript 特性技巧你可能从未使用过
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(上)
查看>>
【视频教程】Javascript ES6 教程27—ES6 构建一个Promise
查看>>
【5分钟代码练习】01—导航栏鼠标悬停效果的实现
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(中)
查看>>
8种ES6中扩展运算符的用法
查看>>
【视频教程】Javascript ES6 教程28—ES6 Promise 实例应用
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(下)
查看>>
【web素材】03-24款后台管理系统网站模板
查看>>
Flex 布局教程:语法篇
查看>>
年薪50万+的90后程序员都经历了什么?
查看>>
2019年哪些外快收入可达到2万以上?
查看>>
【JavaScript 教程】标准库—Date 对象
查看>>
前阿里手淘前端负责人@winter:前端人如何保持竞争力?
查看>>
【JavaScript 教程】面向对象编程——实例对象与 new 命令
查看>>
我在网易做了6年前端,想给求职者4条建议
查看>>
SQL1015N The database is in an inconsistent state. SQLSTATE=55025
查看>>
RQP-DEF-0177
查看>>
Linux查看mac地址
查看>>
Linux修改ip
查看>>