2012-07-21 95 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++編寫的部分。爲此,包括所有標題。但是,以cv開頭的函數,如cvFloodFill,來自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 2012-07-21 14:27:17

+0

這太好了!你修正了編譯問題,現在你可以開始理解OpenCV了。輸入docs.opencv.org,搜索'floodFill',閱讀文檔,查看OpenCV附帶的floodFill示例,您將學習如何使用它。 – Sam 2012-07-21 14:29:25

+0

謝謝vasile! – Medlay 2012-07-21 14:31:31