2013-02-07 99 views
0

My program's objective用于识别摄像机中最大的轮廓并用红线绘制。轮廓线闪烁

我发现,在检测到最大的轮廓(在我的计划又名largest_contours)时,轮廓的轮廓线将闪烁, 有时 将中断功能在周围画一个红色的线(因为轮廓的线没有连接再也不会在图像内检测到轮廓)。

我的问题是:

  1. ,这是什么问题发生的原因?
  2. 如何避免(或者我们可以避免)发生这个问题?
  3. 任何建议,以改善我的轮廓的检测程序?

在此先感谢。

注:有关代码,图片和更多信息,请点击HEREVIDEO HERE!!!

+0

的“闪烁”的问题很可能是由噪声/灯光造成的,是的,但是这也是没有使用任何其他先前帧你可能指示有。您可能需要平均帧数,然后使用此方法的典型建议。但是,要提供任何准确的帮助,您必须包含您自己所描述问题的一些简短示例视频。 – mmgp

+0

添加视频。 http://www.youtube.com/watch?v=4GLabxxd228&feature=youtu.be –

+0

这是一个运行你的应用程序的视频,没有人需要它。需要的是您的原始帧,请检查'VideoWriter'。 – mmgp

回答

0

findContours OpenCV的API修改它用于查找轮廓的图像。您可以尝试以下操作。

Mat displayContours = Mat::zeros(image.rows,image.cols,CV_8UC1); 
for(int i = 1;i<(int)largest_contours[0].size();i++) 
{ 
    line(displayContours,largest_contours[0][i-1],largest_contours[0][i],255,2,8,0); 
    line(image,largest_contours[0][i-1],largest_contours[0][i],cv::Scalar(0,0,255),2,8,0); 
} 

现在显示的displayContours代替​​