导入OpenCV三种方式
1.CocoaPods:pod “OpenCV”
2.下载官方iOS包:http://opencv.org/downloads.html,直接拖入自己新建的IOS工程
3.在GitHub下代码自己编译:GitHub地址https://github.com/Itseez/opencv,编译教程http://docs.opencv.org/doc/tutorials/introduction/ios_install/ios_install.html#ios-installation
ObjectiveC++及封装
OpenCV的API是C++编写的,需要在Objective-C++文件中使用,同时需要将文件后缀名.m改为.mm。这里内存管理是需要注意的,ARC是无效的,所以assign需要在dealloc里将C++对象正确释放掉。更多的混用C++和Objective-C的细节参考Matt Galloway的教程:http://www.raywenderlich.com/62989/introduction-c-ios-developers-part-1,正确的方式是给所有你要在 app 中使用到的 OpenCV 功能写一层 Objective-C++ 封装。这些 Objective-C++ 封装把 OpenCV 的 C++ API 转化为安全的 Objective-C API,以方便地在所有 Objective-C 类中使用。走封装的路子,你的工程中就可以只在这些封装中调用 C++ 代码,从而避免掉很多让人头痛的问题,比如直接改文件后缀名会因为在错误的文件中引用了一个 C++ 头文件而产生难以追踪的编译错误。
注意事项
1.OpenCV下载的Framework拖入工程编译无法找到:/usr/bin/codesign failed with exit code 1
解决方法:1)删除引用,重新Add Files To …导入一遍 2)使用cocoapods导入
2.编译报错:exposure_compensate.hpp:66:12: Expected identifier
解决方法:点到源代码处把NO改为NO_EXPOSURE_COMPENSATOR = 0,重新编译OK
3.编译panorama.framework时报错找不到ovx.hpp。
解决方法:直接注释掉那一行
4.调用opencv人脸识别,提示找不到haarcascade_frontalface_default.xml文件
解决方法:网上下载此文件,然后拖入工程即可
5.#import<opencv2/highgui/cap_ios.h>提示无法找到
解决方法:改为:#import<opencv2/videoio/cap_ios.h>