gpt4 book ai didi

CvConnectedComp.contour 为 NULL 与 cvFloodFill

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

我正在尝试使用 CvConnectedComp,它是 cvFloodFill 的输出。

CvConnectedComp comp;
cvFloodFill(imgInput,seedPoint,
cvScalarAll(0),cvScalarAll(.1),cvScalarAll(1.),
&comp,CV_FLOODFILL_MASK_ONLY,imgMask);

我可以使用 comp.rect 来绘制组件,但是 comp.contourNULL。我想将它用于进一步处理。我也试过不戴面具,但结果还是一样。

任何想法将不胜感激。

最佳答案

注意:已弃用的 OpenCV C API 应仅用于支持遗留代码。新代码应使用 C++ API。

查看 OpenCV 3.0.0 的代码,cvFloodFill 不会填充 comp.contour;它设置的唯一成员是 .rect.area.value。我不知道它是否总是这样,但这是正在发生的事情:

首先,查看 C++ cv::floodFill 的签名:

int floodFill(InputOutputArray image, InputOutputArray mask, Point seedPoint, 
Scalar newVal, Rect* rect=0, Scalar loDiff=Scalar(),
Scalar upDiff=Scalar(), int flags=4 )

注意这里没有连通分量结构,只有一个Rect。返回值是被淹没的区域的面积。

这是由cvFloodFill 调用的方法。代码将 &comp->rect 传递给填充它的 C++ 方法,使用 comp->area 的返回值并将 newVal 复制到comp->value.

关于CvConnectedComp.contour 为 NULL 与 cvFloodFill,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30775254/

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