【从零学习openCV】IOS7下的openCV开发起步(Xcode5.1.1&openCV2.49)
前言:
开发IOS7已经有一月的时间了。近期在准备推研的事,有点想往CV方向发展。于是開始自学openCV。
关注CSDN已经非常久了。也从非常多博主那学到了非常多知识,于是我也从这周开启自己的blog之旅,从零開始学openCV,从零開始做笔记写blog。哈哈~
好了。废话不多说。进入正题。
。
IOS7下使用openCV
Mac OS下要使用openCV当然要编译,可是假设仅仅是在ios下使用openCV的话,仅仅须要将bulid好的opencv2.framework导入到project中就可以。
opencv2.framework在openCV官网上下载就可以。传送门:opencv2.framework
以下我们在Xcode下新建一个Single View Appliction,命名为CvForIOS。
将下载好的opencv2.framework复制到新建好的project文件夹下,然后导入到project文件夹下Frameworks中,还有IOS7.1下的libc++.dylib也要导入。
然后须要在Build Settings中,将“C++ Standard Library”设置成libstdc++。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2hhd25faHQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" width="614" height="116" alt="">
由于opencv中的MIN宏和UIKit的MIN宏有冲突。所以须要在.pch文件里,先定义opencv的头文件。否则会有编译错误。
找到CvForIOS-Preix.pch改动例如以下:
第一个案例:用openCV对手机上的照片进行方框滤波
因为IOS一般都是用UIImage类型来存储显示图像,要用openCV对图像进行操作,就必需要能让cv::mat与UIImage之间自由转换。
在这里我们使用github上的开源码。传送门:aptogo
代码例如以下:
注意:.mm文件是说明在这个文件里混合使用了Object-C和C++两种编程语言,因为openCV使用的是C++,所以要注意仅仅要使用了openCV的文件就必须改后缀名为.mm
好了,接下来我们最终能够进入正题,首先在main.storyboard上加入一个button,一个UIImageView控件,一个UISlider。布局例如以下:
各控件的消息响应和连接例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2hhd25faHQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" align="left" width="256" height="292" alt="">
将视图控制器实现文件的后缀名改为.mm。让viewController实现UIImagePickerControllerDelegate和UIActionSheetDelegate协议
详细实现代码例如以下:
头文件:
doge经过方框滤波后还是那么带感,朦胧的眼神,哈哈!
总算是把准备工作做好了,接下来就能够用openCV在手机上玩耍了~
以后会在IOS7上用openCV实现很多其它更有意思的功能。最后整个案例的代码附上:cvForIOS
(转载请注明作者和出处:Shawn-HT http://blog.csdn.net/shawn_ht 未经同意请勿用于商业用途)
參考文章:http://blog.devtang.com/blog/2012/10/27/use-opencv-in-ios/
最新文章
- 怎么把本地项目和远程git仓库相连通
- js数组的队栈操作
- CentOS 7部署flume
- DDD的思考
- 【jmeter】逻辑控制器
- 4554: [Tjoi2016&;Heoi2016]游戏 二分图匹配
- 用html5的canvas生成图片并保存到本地
- [Node.js] Using npm link to use node modules that are ";in progress";
- JUnit4 笔记
- careercup-数组和字符串1.4
- Eclipse Clojure 开发插件
- TCP/IP之TCP连接的建立与中止状态分析
- WebBrowser控件应用:播放PPT文件
- Tiny4412MMU内存管理
- Venom- Eminem
- 219. 存在重复元素 II
- 【impala学习之二】impala 使用
- log4j的参数配置(转)
- mysql垂直分区和水平分区
- c# WPF 获取网络图片,验证码
热门文章
- Day11名称空间,作用域,闭包函数
- python中os模块讲解
- 在java中使用dom4j解析xml
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛
- Error Domain=AVFoundationErrorDomain Code=-11800 ";这项操作无法完成";
- [UOJ#221][BZOJ4652][Noi2016]循环之美
- [luoguP2221] [HAOI2012]高速公路(线段树)
- es6 箭头函数 map、find
- nmon性能分析工具(生成图表)
- iOS 收款计算器算法