opencv findContours()崩溃了程序

时间:2015-04-26 00:43:28

标签: c++ opencv image-processing

我是图像处理的新手,我正在进行实时跟踪

但我坚持使用findCountours功能。

cvtColor(*pImg, *pImg, CV_RGBA2GRAY); //convert to gray image
Mask = pImg->clone();  //clone the source
Mask.convertTo(Mask,CV_8UC1); //convert to 8UC1
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
findContours( Mask, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0)  );
contours.clear();  
hierarchy.clear();

当我运行该程序时它会崩溃,如果我评论findCountours函数就可以了。

我查了一些文件,但不知道发生了什么。

2 个答案:

答案 0 :(得分:0)

Mask = pImg->clone();  //clone the source
Mask.convertTo(Mask,CV_8UC1); //convert to 8UC1

替换

pImg.convertTo(Mask, CV_8U, arg);
对于不同类型的输入图像,

arg 可能不同。 255 for float / double。

答案 1 :(得分:0)

尝试使用&#34; Canny边缘检测器或阈值运算符&#34;在找到轮廓之前。 根据您需要执行的任务选择您的操作员。

   `cvtColor(*pImg, *pImg, CV_RGBA2GRAY); //convert to gray image
    Mask = pImg->clone();  //clone the source
    Mask.convertTo(Mask,CV_8UC1); //convert to 8UC1
    vector<vector<Point> > contours;
    vector<Vec4i> hierarchy;
    /*based on your need use any of these operator */
    threshold( input, output, threshold_value, max_BINARY_value,threshold_type );  
   Canny( input, canny_output, thresh, thresh*2, 3 );
    findContours( output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0)  );
    contours.clear();  
    hierarchy.clear();`