c - CvConnectedComp.contour is NULL with cvFloodFill



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

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

我能够使用comp.rect来绘制组件,但comp.contour NULL.我想使用它进行进一步处理。我也尝试过不戴口罩,但结果仍然相同。

任何想法将不胜感激。

注意:已弃用的 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->areanewVal复制到 comp->value 中。

相关内容

  • 没有找到相关文章

最新更新