OpenCV For iOS 1: 连接OpenCV 3.0
2016-04-27 15:08
344 查看
本文的内容参考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:输入如下代码:
[objc]
view plain
copy
@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的各个功能算法。
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:输入如下代码:
[objc]
view plain
copy
@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的各个功能算法。
相关文章推荐
- 爱萌即时通讯使用 - Other linker flags设置
- iOS 延迟执行的方法总结
- 灵活式的collectionview的header
- iOS MD5加密算法
- iOS最新极光推送详解
- 字符串与数组的相互转化
- iOS里面MVC模式详解
- [转] IOS开源项目汇总
- iOS隐私政策
- iOS开发小技巧--字典和数组的中文输出
- IOS小技巧-快速注释插件VVDocumenter(以及升级xcode会失效的解决方法)
- iOS开发小技巧--利用苹果官方API播放视频(方法已经过时,了解一下)
- iOS 使用iPhone配置实用工具 创建桌面快捷方式
- ios加急审核联系网址
- iOS边练边学--iOS中的XML数据解析
- iOS -- 无开发者账号真机调试
- [转]iOS 30个动画详细解释
- iOS多线程小结
- iOS边练边学--iOS中的json数据解析
- 免费开源网管软件cacti,nagios,zabbix,WeADMIN ITOSS亲测分享