2012-04-21 24 views
5

mam sklonowany https://github.com/niw/iphone_opencv_test i starał się zastąpićprojekt OpenCV na iPhone - opencv.hpp budynek problem

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

z

#import <opencv2/opencv.hpp> 

w OpenCVTestViewController.m pliku. Ale XCode rzucił następujący błąd:

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" 

Więc starałem się usunąć wiersz #include "opencv2/calib3d/calib3d.hpp" z pliku opencv.hpp. Został zgłoszony błąd poniżej:

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

Próbowałem również zmienić .m na mmmm, ale wydawało się to daremne. Gdzie się mylę?

+0

możesz wypróbować ten framework ... http://aptogo.co.uk/2011/09/opencv-framework-for-ios/ – Aravindhan

+0

@Aravindhanarvi dziękuję za odpowiedź. Używam już podejścia tego projektu, ale chcę tylko wiedzieć __why__ podejście do projektu (które napisałem) nie działa. – user961912

Odpowiedz

3

Istnieje konflikt między makrami MAX/MIN OpenCV i MAX/MIN Cocoa. Prowadzi to do dziwnych błędów, takich jak ten podczas kompilacji. Aby ominąć ten problem, możesz: 1. dodać na początku predefiniowanego pliku nagłówkowego 2. całkowicie odłączyć kod opencv i obj-c, aby nie zawierał pliku .m/.mm. Można to zrobić na przykład za pomocą wzmocnienia GIL pośredniego lub przy użyciu niestandardowych klas C++ wanilii, aby przekazać dane obrazu z frameworków Cocoa do klas przetwarzania obrazu C++ opencv.

+0

Dziękuję, tego właśnie chciałem! – user961912

+0

czy masz jakikolwiek poradnik jak używać boost GIL? –

+0

Ten jest trudny, myślę, że powinieneś zadać pytanie na StackOverflow. Krótka odpowiedź: nie potrzebujesz tego, jeśli po prostu przekazujesz wskaźniki do pól danych i jeśli dodasz wiersz #import przed #import w pliku .pch. – sansuiso