首页 > 代码库 > OpenCV For iOS 1: 连接OpenCV 3.0

OpenCV For iOS 1: 连接OpenCV 3.0

本文的内容参考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的各个功能算法。



OpenCV For iOS 1: 连接OpenCV 3.0