2012-05-30 83 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