2012-04-21 106 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