2012-04-21 66 views
5

我克隆https://github.com/niw/iphone_opencv_test,并试图在OpenCVTestViewController.m文件,OpenCV的项目 - opencv.hpp建设问题

#import <opencv2/opencv.hpp> 

更换

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

。但扔了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" 

所以,我试图从opencv.hpp文件中删除线#include "opencv2/calib3d/calib3d.hpp"。下面的错误被抛出:

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

我也试图改变.m为.mm,但它似乎徒劳。我错在哪里?

+0

你可以试试这个框架... http://aptogo.co.uk/2011/09/opencv-framework-for-ios/ – Aravindhan 2012-04-21 10:09:12

+0

@Aravindhanarvi谢谢你的回复。我已经在使用这个项目的方法,但我只想知道__why__该项目(我发布)的方法不起作用。 – user961912 2012-04-21 10:20:38

回答

3

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

+0

谢谢,这就是我想要的! – user961912 2012-04-23 13:11:15

+0

你有没有关于如何使用boost GIL的任何教程? – 2012-08-28 04:33:19

+0

这是一个棘手的问题,我想你应该问StackOverflow上的问题。简短回答:如果您只传递指向数据字段的指针,并且在.pch文件中的#import 之前添加了行#import ,则不需要它。 – sansuiso 2012-08-28 18:44:51