2012-05-30 147 views
4

我有這樣的代碼:OpenCV的findContours崩潰

mat.copyTo(tmpMat); 
cvtColor(tmpMat, tmpMat, CV_BGR2GRAY); 
cv::equalizeHist(tmpMat, tmpMat); 
    cv::Mat browMat = tmpMat(eyebrowRect); 
    std::vector<std::vector<Point> > contours; 
    cv::findContours(browMat, contours, cv::RETR_LIST, cv::CHAIN_APPROX_NONE); 

但與此錯誤崩潰:

OpenCV Error: Assertion failed (type == type0 || (CV_MAT_CN(type) == CV_MAT_CN(type0) && ((1 << type0) & fixedDepthMask) != 0)) in create, file /Users/robin/Projects/OpenCVForiPhone/opencv/opencv/modules/core/src/matrix.cpp, line 1249 terminate called throwing an exception

我想我的墊已經在1通道的灰度因爲cvtColor的致電...

我該如何解決這個問題?

+0

您如何期望cvtColor在原位進行從3聲道到1聲道圖像的轉換? –

+0

我使用太cv :: adaptiveThreshold,將轉換爲1channel圖像,我認爲...如果我錯了,請告訴我如何實現從我的墊子1通道圖像 – Progeny

+1

@Progeny你應該接受答案如果它已經解決了您的問題 –

回答

9

相反的:

std::vector<std::vector<Point> > contours; 

你試過嗎?

std::vector<std::vector<cv::Point> > contours; 
+0

我已經替換了CvPoint的Point,因爲我沒有花時間正確地讀取編譯器錯誤。更改爲cv :: Point爲我做了訣竅。 – charshep