gpt4 book ai didi

image-processing - cvFindContours() 未检测到单独的组件

转载 作者:太空宇宙 更新时间:2023-11-03 21:04:29 26 4
gpt4 key购买 nike

我试图在图像的一个小区域内找到连接的组件(如果有的话)。然而,cvFindContours() 函数将明显独立的组件分组为一个组件,从而导致进一步的计算不正确。

如何获取区域内的独立组件? (为函数检测到的不同组件着色)。

代码如下:

    IplImage* cc_img = cvCreateImage( cvGetSize(src), src->depth, 3 );
cvSetZero(cc_img);
CvScalar(ext_color);

CvMemStorage *mem;
mem = cvCreateMemStorage(0);
CvSeq *contours = 0;
CvSeq *ptr;
int n_cont = 0;
int n = cvFindContours( src, mem, &contours, sizeof(CvContour), CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));

for (ptr = contours; ptr != NULL; ptr = ptr->h_next)
{
n_cont++;

ext_color = CV_RGB( rand()&255, rand()&255, rand()&255 ); //randomly coloring different contours
cvDrawContours(cc_img, ptr, ext_color, CV_RGB(0,0,0), -1, CV_FILLED, 8, cvPoint(0,0));
}

enter image description here

“CEL”被认为是一个单一的组件!

最佳答案

我不使用 OpenCV,但我用 Mathematica 验证了您可能想要指定两个组件应该仅通过它们的顶部、底部、左侧和右侧邻居连接。如果您考虑完整的 8 个邻居,那么所有三个字母都是连接的,如您所示:

comp = MorphologicalComponents[img, CornerNeighbors -> False];
Colorize[comp]

enter image description here

关于image-processing - cvFindContours() 未检测到单独的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6922399/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com