2012-07-21 3 views
3

openCV를 사용하여 iOS 용 애플리케이션을 작성하려고합니다. 예제에서 코드 (예 : squares.c)를 사용하고이를 내 인터페이스에 채택하면 모두 좋다. 하지만 이상한 오류를 테스트하기위한 몇 가지 기능을 추가하려고 할 때 발생했습니다. 예를 들면 :iOS의 OpenCV 기능 오류

const cv::Point* p = &squares[j][0]; 
int n = (int)squares[j].size(); 
cv::Mat image = [my_image CVMat]; 
polylines(image, &p, &n, 1, true, cv::Scalar(0,255,0), 8, CV_AA); //Working good 
cvFloodFill(&c, cvPoint(10, 10), CV_RGB(255, 0, 0)); // Not working 

오류 : OpenCV의 오류 : 잘못된 플래그 (매개 변수 또는 구조 필드) cvGetMat에서 (인식 또는 지원되지 않는 배열 형), 파일/사용자/아지즈/문서/프로젝트/opencv_sources/트렁크/모듈/core/src/array.cpp, line 2482

내가 뭘 잘못하고있어?

답변

3

C++을 C 인터페이스와 혼합합니다.

C++로 작성된 부분. 이를 위해 모든 헤더가 포함됩니다. 그러나 cvFloodFill과 같이 cv로 시작하는 함수는 C 인터페이스 또는 레거시 모듈에서 가져오고 아마도 포함하지 않았을 것입니다.

제 조언은 코드를 C++로 유지하는 것입니다. 그래서,

cv::floodFill(c, cv::Point(10,10), cv::Scalar(255,0,0)); 

를 작성하고 변수 이름 c이 내가 가진 변경 한 후 C++ 것은

+0

있는지 확인 - OpenCV의 오류 : cvFloodFill에서 지원되지 않는 형식이나 형식의 조합(). 변수 c는 cv :: Mat c = [image CVMat]입니다. – Medlay

+0

그게 훨씬 낫 네요! 컴파일 문제를 해결 했으므로 이제 OpenCV를 이해할 수 있습니다. docs.opencv.org에 들어가서'floodFill'을 검색하고, 문서를 읽고, OpenCV와 함께 제공되는 floodFill 예를 확인하면 사용 방법을 배우게됩니다. – Sam

+0

감사합니다! – Medlay