在opencv中绘制连接的组件

Draw connected components in opencv

本文关键字:组件 连接 绘制 opencv      更新时间:2023-10-16

我一直在学习OpenCV书。

我试图做一些有用的PyrSegmentation方法在第5章:

void f(IplImage* src, IplImage* dst) 
{
    CvMemStorage* storage = cvCreateMemStorage(0);
    CvSeq* comp = NULL;
    cvPyrSegmentation( src, dst, storage, &comp, 4, 200, 50 );     
    int n_comp = comp->total;
    for( int i=0; i < n_comp; i++ ) {
    CvConnectedComp* cc = (CvConnectedComp*) cvGetSeqElem( comp, i );
    // do_something_with( cc );
    }
cvReleaseMemStorage( &storage );
}

我似乎不能把结果画在图像上。

我尝试了一些事情,包括创建一个新图像,将其清空,并运行一个循环,其中包含以下内容:

if (inputKey == 32)
{
  // Draw surface
  cvZero(surface);
  cvDrawContours( surface, cc->contour, cvScalarAll(255), cvScalarAll(255), 100);
  cvShowImage( "Contour", surface);
  printf("Show new surface (%d)...n", i);
}

然而,无论我做什么,我最终与一个空的图像。似乎确实有有效的数据被返回,我只是不能显示它。

任何帮助将不胜感激!

谢谢!

问题是cvPyrSegmentation不填充CvConnectedComponent的轮廓成员。根据文档,需要自己计算。我正在为此工作,并有一个问题张贴在这里,如果有人正在寻找一个答案:

https://stackoverflow.com/questions/25433662/display-regions-detected-by-cvpyrsegmentation-in-opencv