openCV 2.4.3 / Xcode 4.5.2 / mac osx 10.8.2
我正在尝试让 openCV 与 iOS 一起工作。我正在尝试使用来自 openCV.org 的预构建 2.4.3 框架。但是,我收到以下 xcode 项目构建错误,表明编译器不知道它正在处理 c++,例如
#include <list> !'list' file not found
namespace cv !unknown type name 'namespace'
这似乎只涉及以下头文件:
“opencv2/nonfree/features2d.hpp”
“opencv2/nonfree/nonfree.hpp”
“opencv2/video/video.hpp”
如果我不在 opencv.hpp (或其他任何地方)中包含这三个文件,我似乎能够编译和使用 openCV ok。问题是,我在试验 SURF 时确实需要非自由文件——它最近已移至非自由文件。
这确实是一个双重问题(对不起;-)
- 如何让编译器相信这些是 C++ 头文件?
- 我需要使用 SURF 哪些标头?
更新
我已经克隆了 openCV git 存储库并从中构建了一个新框架。这种方法以前不起作用,但今天我意识到我没有使用当前版本的 CMAKE。我一直在使用 CMAKE 2.8.2,这将无法为 ios 构建 opencv。当前版本 CMAKE 2.8.10 构建它没有任何问题(这是遵守文档的对象教训,确实说 CMAKE min. v2.8.8 是必需的)。
现在,当我在 Xcode 项目中添加当前构建的 opencv 框架时,我可以包含features2d和nonfree并顺利构建。唯一的问题仍然是一个标题:video/background_segm.hpp
,它仍然产生:
#include <list> !'list' file not found
如果我将该行注释掉,我会在下一行收到错误消息:
namespace cv !unknown type name 'namespace'
很明显,编译器不会将其识别为 C++ 头文件,即使它的后缀为.hpp
.
如果opencv2/video/video.hpp
我删除
#include "opencv2/video/background_segm.hpp"
我也可以构建video.hpp
(尽管我想它在实践中是不可用的)。
不幸的是,我仍然无法让 SURF 工作。当我运行该项目时,它会因以下错误而崩溃:
OpenCV 错误:功能/特性未实现(OpenCV 是在没有 SURF 支持的情况下构建的)
这是在以下情况下触发的legacy/features2d.cpp
:
Ptr<Feature2D> surf = Algorithm::create<Feature2D>("Feature2D.SURF");
if( surf.empty() )
CV_Error(CV_StsNotImplemented, "OpenCV was built without SURF support");
问题仍然...
- 如何说服编译器
background_segm.hpp
是合法的 c++ 头文件? - 如何启用 SURF 支持?