5

我已经克隆了https://github.com/niw/iphone_opencv_test并尝试替换

#import <opencv2/imgproc/imgproc_c.h>
#import <opencv2/objdetect/objdetect.hpp>

#import <opencv2/opencv.hpp>

OpenCVTestViewController.m文件中。但是 XCode 抛出了以下错误:

iphone_opencv_test/opencv_device/include/opencv2/opencv.hpp:55:10: fatal error: 'opencv2/calib3d/calib3d.hpp' file not found [2]
 #include "opencv2/calib3d/calib3d.hpp"

所以,我试图#include "opencv2/calib3d/calib3d.hpp"opencv.hpp文件中删除该行。抛出以下错误:

iphone_opencv_test/opencv_device/include/opencv2/ml/ml.hpp:2075:10: fatal error: 'map' file not found [2]
 #include <map>

我也尝试将 .m 更改为 .mm,但这似乎是徒劳的。我哪里错了?

4

1 回答 1

3

OpenCV 的 MAX/MIN 宏和 Cocoa 的 MAX/MIN 之间存在冲突。它会在编译时导致像这样的奇怪错误。要绕过这个问题,您可以: 1. 在预定义的头文件顶部添加 2. 完全解耦 opencv 和 obj-c 代码,这样就没有 .m/.mm 文件包含 . 例如,这可以通过在中间使用 boost GIL 或使用自定义 vanilla C++ 类将图像数据从 Cocoa 框架传递到 opencv C++ 图像处理类来完成。

于 2012-04-23T10:31:06.383 回答