目录
- 简介
- 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
网友评论