zoukankan      html  css  js  c++  java
  • 基于OpenCV的iOS开发笔记(1)

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

    1)Xcode 6

    2)OpenCV for iOS 3.0.0 

    -------------------分割线----------------------------

    1.coder都知道开发之前需要做的就是平台搭建(混蛋不想配置环境~)

    OpenCV官网下载OpenCV开发包(推荐最新版,支持64位哦)

    Step 1:创建一个新的项目

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

    简单的惨绝人寰的环境配置。

    2.终于要开始写代码了

    由于OpenCV代码时基于C++编写的,因此,要在项目中运行c++代码,需要将文件名后缀由.m改成.mm,如上图所示。

    (这么干或许能行得通,却不是什么好主意。正确的方式是给所有你要在 app 中使用到的 OpenCV 功能写一层 Objective-C++ 封装。这些 Objective-C++ 封装把 OpenCV 的 C++ API 转化为安全的 Objective-C API,以方便地在所有 Objective-C 类中使用。走封装的路子,你的工程中就可以只在这些封装中调用 C++ 代码,从而避免掉很多让人头痛的问题,比如直接改文件后缀名会因为在错误的文件中引用了一个 C++ 头文件而产生难以追踪的编译错误。以后有机会我们来这么写吧,今天不想~~)

    OpenCV 声明了命名空间 cv,因此 OpenCV 的类的前面会有个 cv:: 前缀,就像 cv::Mat、 cv::Algorithm 等等。你也可以在 .mm 文件中使用 using namespace cv 来避免在一堆类名前使用 cv:: 前缀。

    但是,在某些类名前你必须使用命名空间前缀,比如 cv::Rect 和 cv::Point,因为它们会跟定义在 MacTypes.h 中的 Rect 和 Point 相冲突。尽管这只是个人偏好问题,我还是偏向在任何地方都使用 cv:: 以保持一致性。

    说了那么多先测试一下吧。

    @interface ViewController ()
    {
        cv::Mat cvImage;
    }
    @property (weak, nonatomic) IBOutlet UIImageView *imgView;
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {

        [super viewDidLoad];
        CGRect rect = [UIScreen mainScreen].bounds;
        self.imgView.frame = rect;
        
        UIImage *image = [UIImage imageNamed:@"lenna.png"];
        UIImageToMat(image, cvImage);
        
        if(!cvImage.empty()){
            cv::Mat gray;
            // 将图像转换为灰度显示
            cv::cvtColor(cvImage,gray,CV_RGB2GRAY);
            // 应用高斯滤波器去除小的边缘
            cv::GaussianBlur(gray, gray, cv::Size(5,5), 1.2,1.2);
            // 计算与画布边缘
            cv::Mat edges;
            cv::Canny(gray, edges, 0, 50);
            // 使用白色填充
            cvImage.setTo(cv::Scalar::all(225));
            // 修改边缘颜色
            cvImage.setTo(cv::Scalar(0,128,255,255),edges);
            // 将Mat转换为Xcode的UIImageView显示
            self.imgView.image = MatToUIImage(cvImage);
        }
    }
    

     由于只是一个简单的测试程序。我们的storyboard也非常的简单的用UIImageView填充满屏幕。

    看一下结果吧。

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

    那么我们为何不趁热看一下接下的文章呢。

  • 相关阅读:
    Android Studio来了,是否准备抛弃Eclipse?
    Android Studio来了,是否准备抛弃Eclipse?
    文件名搜索神器Everything(201306更新)
    文件名搜索神器Everything(201306更新)
    可替代Windows任务管理器System Explorer
    log4j使用详解
    复平面和直角坐标系的思考
    芯片内电路和芯片外围电路
    复数的思考
    时不变的思考
  • 原文地址:https://www.cnblogs.com/dinghing154/p/4753072.html
Copyright © 2011-2022 走看看