我一直在阅读学习OpenCV的书。
我试图在第5章中使用PyrSegmentation方法做一些有用的事情:
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);
}
然而,无论我做什么,我最终都会得到一张空图像。似乎确实返回了有效数据,我似乎无法显示它。
任何帮助将不胜感激!
谢谢!
答案 0 :(得分:0)
问题是cvPyrSegmentation没有填充设置CvConnectedComponent的轮廓成员。根据文档,人们需要自己计算。我正在研究这个问题,如果有人在寻找答案,可以在这里发布一个问题:
https://stackoverflow.com/questions/25433662/display-regions-detected-by-cvpyrsegmentation-in-opencv