美文网首页
iOS-集成OpenCV框架实现简单功能、

iOS-集成OpenCV框架实现简单功能、

作者: 晴天ccc | 来源:发表于2022-03-21 16:46 被阅读0次

目录

  • 简介
  • iOS如何集成OpenCV ?
    ---- Cocoapods第三方库引入
    ----头文件引入
    ----修改文件后缀
    ----实现简单功能

简介

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它提供了很多函数,这些函数非常高效地实现了计算机视觉算法(最基本的滤波到高级的物体检测皆有涵盖)。
iOS官方参考文档:https://docs.opencv.org/4.0.1/d3/dc9/tutorial_table_of_content_ios.html

iOS如何集成OpenCV ?

  • Cocoapods第三方库引入
 pod search openCV
-> Opencv2-ios-framework (4.5.5)
   OpenCV (Computer Vision) for iOS as a dynamic framework.
   pod 'Opencv2-ios-framework', '~> 4.5.5'
   - Homepage: https://opencv.org/
   - Source:   https://github.com/opencv/opencv/releases/download/4.5.5/opencv-4.5.5-ios-framework.zip
   - Versions: 4.5.5 [master repo]

-> opencv_holla (0.0.1)
   OpenCV2 iOS video SDK
   pod 'opencv_holla', '~> 0.0.1'
   - Homepage: http://www.holla.world/
   - Source:   https://www.dropbox.com/s/yo5xks2hv8sfkbq/opencv2.framework.zip?dl=0
   - Versions: 0.0.1 [master repo]

-> OpenCVBridge (0.0.4)
   Simple Objective-C++ bridge for OpenCV
   pod 'OpenCVBridge', '~> 0.0.4'
   - Homepage: https://github.com/MainasuK/OpenCVBridge
   - Source:   https://github.com/MainasuK/OpenCVBridge.git
   - Versions: 0.0.4 [master repo]

-> OpenCVmin-face (3.4.5)
   OpenCV iOS/OSX framework minified + face landmarks module
   pod 'OpenCVmin-face', '~> 3.4.5'
   - Homepage: https://github.com/adamgf/OpenCVmin-face
   - Source:   https://github.com/adamgf/OpenCVmin-face/raw/master/opencvmin-face-3.4.5-ios-framework.zip
   - Versions: 3.4.5 [master repo]
........

我这里使用的版本是4.0.1

  pod 'OpenCV' , '4.0.1'
  • 头文件引入
#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#import <opencv2/imgproc/types_c.h>
#import <opencv2/imgcodecs/ios.h>
#endif

#import "ViewController.h"

OpenCV相关的头文件必须在 #import "ViewController.h"之前导入,否则连接错误。

  • 修改文件后缀

凡是导入OpenCV头文件的类,都需要把相应类后缀名.m改为.mm。我这里在ViewController控制器上进行操作,所以改为:ViewController.mm

  • 实现简单功能
#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#import <opencv2/imgproc/types_c.h>
#import <opencv2/imgcodecs/ios.h>
#endif
#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *originalImgView;  // 原始图片
@property (weak, nonatomic) IBOutlet UIImageView *resultImgView;    // 处理后的图片
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.originalImgView.image = [UIImage imageNamed:@"model_2.JPG"]; 
    self.resultImgView.image = [self convertImage:[UIImage imageNamed:@"model_2.JPG"]];
}

- (UIImage*)convertImage:(UIImage*)image {
    cv::Mat cvImage;
    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显示
        return MatToUIImage(cvImage);
    }
    return nil;
}
@end

相关文章

网友评论

      本文标题:iOS-集成OpenCV框架实现简单功能、

      本文链接:https://www.haomeiwen.com/subject/epdtjrtx.html