OpenCV 是一个开源的跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法。
最近试着在iOS 上使用 OpenCV,发现网上关于 iOS 上搭建 OpenCV 的资料很少。自己就整理了下,算是留个笔记。
在项目中导入OpenCV
最早的时候只能下载官方的framework然后导入到工程。通过相关编译选项的一系列配置才能使用。不过现在可以通过CocoaPods可以飞速导入OpenCV了。
source 'https://github.com/Zi0P4tch0/Specs.git'
platform :ios, '8.0'
inhibit_all_warnings!
pod 'OpenCV', '2.4.9-zp'
提醒:通过pod search 搜出来的source不是这个地址,因为根据搜索出来的地址无法安装OpenCV,提示Could not resolve host: hivelocity.dl.sourceforge.net。根据stackoverflow上这个回答修改成上面这个地址才可以安装
OpenCV是一个C++的API,因此如果要在OC中使用必须把文件后缀该为.mm。这个教程告诉了我们更好的方法
正确的方式是给所有你要在 app 中使用到的 OpenCV 功能写一层 Objective-C++ 封装。这些 Objective-C++ 封装把 OpenCV 的 C++ API 转化为安全的 Objective-C API,以方便地在所有 Objective-C 类中使用。走封装的路子,你的工程中就可以只在这些封装中调用 C++ 代码,从而避免掉很多让人头痛的问题,比如直接改文件后缀名会因为在错误的文件中引用了一个 C++ 头文件而产生难以追踪的编译错误。
并且文章中提到ARC只对Objective-C 对象有效。因此C++的内存管理需要格外注意
参考资料
- 唐巧的博客http://blog.devtang.com/2012/10/27/use-opencv-in-ios/
- 上面引用的文章http://objccn.io/issue-21-9/
- 一个学习社区,能找到部分翻译文档http://www.opencv.org.cn/index.php
- 国人写的一个识别图像的demohttps://github.com/jimple/OpenCVSample
- 基于OpenCV的牌照识别https://github.com/zhoushiwei/EasyPR-iOS.git
- 一本相关书籍Instant OpenCV for iOS,
书的源码https://github.com/Itseez/opencv_for_ios_book_samples