在opencv中绘制连接的组件
Draw connected components in opencv
我一直在学习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相关文章:
- 到连接组件算法的问题(递归)
- 使用 bfs 解决连接组件问题时得到错误的答案
- 将无向连接图分解为两个组件
- 连接的组件程序产生不正确的输出
- 查找每个连接组件区域的邻域
- 根据现有的标签(而不是二进制图像)查找使用 OpenCV 连接的组件
- 如何在OpenCV中对连接组件进行分割
- OpenCV 3.4.0 中带有 cuda 的连接组件(在 GPU 上)
- 连接的组件标记算法C
- QML组件与信号连接
- 连接的组件标签
- 在 opencv 中从 Mat 图像创建多个子图像?尝试为每个连接的组件创建子图像
- 如何使用opencv c++的聚类来根据面积和高度对连接的组件进行分类
- 在一个DFS中查找Di-Graph中的强烈连接组件
- OpenCV 中的连接组件
- 使用带有笛卡尔点的升压连接组件
- 使用 c++ 为大至 1000 x 1000 的矩阵实现 8 连接连接的组件标记
- C++ 中无向图中的连接组件
- 如何确定整个图是否是一个强连接的组件
- 在随机分离的数据上标记连接的组件