OpenCV 是一個開源的跨平臺計算機視覺庫央渣,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法计盒。
最近試著在iOS 上使用 OpenCV,發(fā)現(xiàn)網(wǎng)上關(guān)于 iOS 上搭建 OpenCV 的資料很少芽丹。自己就整理了下北启,算是留個筆記。
在項目中導(dǎo)入OpenCV
最早的時候只能下載官方的framework然后導(dǎo)入到工程拔第。通過相關(guān)編譯選項的一系列配置才能使用咕村。不過現(xiàn)在可以通過CocoaPods可以飛速導(dǎo)入OpenCV了。
source 'https://github.com/Zi0P4tch0/Specs.git'
platform :ios, '8.0'
inhibit_all_warnings!
pod 'OpenCV', '2.4.9-zp'
提醒:通過pod search 搜出來的source不是這個地址蚊俺,因為根據(jù)搜索出來的地址無法安裝OpenCV懈涛,提示Could not resolve host: hivelocity.dl.sourceforge.net。根據(jù)stackoverflow上這個回答修改成上面這個地址才可以安裝
OpenCV是一個C++的API泳猬,因此如果要在OC中使用必須把文件后綴該為.mm批钠。這個教程告訴了我們更好的方法
正確的方式是給所有你要在 app 中使用到的 OpenCV 功能寫一層 Objective-C++ 封裝。這些 Objective-C++ 封裝把 OpenCV 的 C++ API 轉(zhuǎn)化為安全的 Objective-C API暂殖,以方便地在所有 Objective-C 類中使用价匠。走封裝的路子,你的工程中就可以只在這些封裝中調(diào)用 C++ 代碼,從而避免掉很多讓人頭痛的問題锌奴,比如直接改文件后綴名會因為在錯誤的文件中引用了一個 C++ 頭文件而產(chǎn)生難以追蹤的編譯錯誤贱案。
并且文章中提到ARC只對Objective-C 對象有效。因此C++的內(nèi)存管理需要格外注意
參考資料
- 唐巧的博客http://blog.devtang.com/2012/10/27/use-opencv-in-ios/
- 上面引用的文章http://objccn.io/issue-21-9/
- 一個學(xué)習(xí)社區(qū)脉漏,能找到部分翻譯文檔http://www.opencv.org.cn/index.php
- 國人寫的一個識別圖像的demohttps://github.com/jimple/OpenCVSample
- 基于OpenCV的牌照識別https://github.com/zhoushiwei/EasyPR-iOS.git
- 一本相關(guān)書籍Instant OpenCV for iOS,
書的源碼https://github.com/Itseez/opencv_for_ios_book_samples