我下载了OpenCV iOS框架from here,并且在iOS 6上运行良好,但在iOS 5.0上,每当我打电话:
self.videoCamera = [[CvVideoCamera alloc] initWithParentView:self.imageView];
来自this tutorial,我收到以下错误消息:
dyld: lazy symbol binding failed: Symbol not found: _objc_setProperty_nonatomic
Referenced from: /var/mobile/Applications/8ADDFB67-97CE-4F6B-94B5-BD2548E0E6DD/MyApp.app/MyApp
Expected in: /usr/lib/libobjc.A.dylib
dyld: Symbol not found: _objc_setProperty_nonatomic
Referenced from: /var/mobile/Applications/8ADDFB67-97CE-4F6B-94B5-BD2548E0E6DD/MyApp.app/MyApp
Expected in: /usr/lib/libobjc.A.dylib
最新版本仅适用于iOS 6吗?是否有iOS 5的等价物?
答案 0 :(得分:4)
见Q& A:
http://answers.opencv.org/question/4767/build-opencv-for-ios-5/
似乎最新来源存在问题,他们建议您使用the most recent pre-built framework (2.4.3)。
话虽如此,我有一个上周从当前源码构建的版本,在ios6.0,5.1和5.0上正常运行(参见github projects here和here)
但是,当我尝试使用此框架指向的视频示例时,我得到了相同的错误。
因此,它似乎取决于您尝试使用的openCV的确切功能....
<强>更新强>
我刚试过2.4.3并得到同样的错误。返回一个版本2.4.2无效,因为<opencv2/highgui/cap_ios.h>
不存在。这个文件声明了CvVideoCamera
类和委托协议,所以如果没有它,你将不会得到这个例子的任何地方。有趣的是,cap_ios.h
是一个Objective-C类声明,不像openCV的其余部分是C ++ ...所以这个特定的特性可能只适用于ios6
<强> UPDATE2 强>
好的,我设法使用最新源代码的最新版本的openCV来运行它。
1 /将这些预构建源文件复制到项目中:
的OpenCV /模块/ highgui / SRC /
cap_ios_abstract_camera.mm
cap_ios_photo_camera.mm
cap_ios_video_camera.mm
cap_ios.h
2 /在三个.mm文件中更改这些行:
#import "opencv2/highgui/cap_ios.h"
#include "precomp.hpp"
到:
#import "cap_ios.h"
// #include "precomp.hpp"
2 /在viewController中更改
#import <opencv2/highgui/cap_ios.h>
到
#import "cap_ios.h"
这就是它......可能还有一两个其他的调整,但我认为只需要在5.1的部署目标下运行它。