2012-04-21 45 views
5

Tôi đã nhân bản https://github.com/niw/iphone_opencv_test và cố gắng để thay thếdự án OpenCV trên iPhone - opencv.hpp xây dựng vấn đề

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

với

#import <opencv2/opencv.hpp> 

trong OpenCVTestViewController.m tập tin. Nhưng XCode ném lỗi sau:

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" 

Vì vậy, tôi đã cố gắng để loại bỏ các dòng #include "opencv2/calib3d/calib3d.hpp" từ tập tin opencv.hpp. Lỗi bên dưới đã được ném:

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

Tôi cũng đã cố thay đổi .m thành .mm, nhưng có vẻ như vô ích. Tôi đang ở đâu?

+0

bạn có thể thử khung này ... http://aptogo.co.uk/2011/09/opencv-framework-for-ios/ – Aravindhan

+0

@Aravindhanarvi cảm ơn bạn đã trả lời. Tôi đã sử dụng cách tiếp cận của dự án này, nhưng tôi chỉ muốn biết __why__ cách tiếp cận của dự án (tôi đã đăng) không hoạt động. – user961912

Trả lời

3

Có xung đột giữa các macro MAX/MIN của OpenCV và MAX/MIN của Cocoa. Nó dẫn đến các lỗi lạ như thế này tại thời gian biên dịch. Để bỏ qua vấn đề này, bạn có thể: 1. thêm ở trên cùng của tệp tiêu đề được xác định trước 2. hoàn toàn decouple opencv và mã obj-c, do đó không có tệp .m/.mm bao gồm. Điều này có thể được thực hiện ví dụ bằng cách sử dụng tăng GIL ở giữa, hoặc sử dụng các lớp vanilla C++ tùy chỉnh để chuyển dữ liệu hình ảnh từ khung công tác Cocoa sang các lớp xử lý ảnh opencv C++.

+0

Cảm ơn bạn, đó là những gì tôi muốn! – user961912

+0

bạn có bất kỳ hướng dẫn nào về cách sử dụng tăng GIL không? –

+0

Đây là một trong những khó khăn, tôi nghĩ rằng bạn nên đặt câu hỏi trên StackOverflow. Câu trả lời ngắn: bạn không cần nó nếu bạn chỉ cần truyền con trỏ tới các trường dữ liệu và nếu bạn thêm dòng #import trướC#import trong tệp .pch. – sansuiso

Các vấn đề liên quan