我是图像处理的新手,我正在进行实时跟踪
但我坚持使用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
函数就可以了。
我查了一些文件,但不知道发生了什么。
答案 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();`