0

我正在尝试使用CvConnectedComp哪个是cvFloodFill.

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

我可以comp.rect用来绘制组件,但是我想用它来做进一步的处理comp.contourNULL我也试过不戴口罩,但结果还是一样。

任何想法将不胜感激。

4

1 回答 1

2

注意:不推荐使用的 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复制newValcomp->value.

于 2015-06-11T16:35:15.270 回答