OpenCVSharp 2:FloodFill被破坏并破坏输出掩码

时间:2017-05-19 06:57:21

标签: c# mat opencvsharp opencv-mat

使用最新的OpenCVSharp v2(2.4.10.201 ...),我在我的项目中使用NuGet管理器安装。

洪水填充功能似乎存在内存损坏问题。我将它应用于以下图像: enter image description here

结果如下: enter image description here

虽然生成的蒙版遵循相同的损坏模式: enter image description here

我使用的代码是:

filledArea = new CvMat( hue.Rows + 2, hue.Cols + 2, MatrixType.U8C1 );
Cv.FloodFill( hue, hintPos, new CvScalar(255,255,255), low, upp, out filledAreaData,
    FloodFillFlag.Link8 | FloodFillFlag.FixedRange, filledArea );

,其中 hue 是输入图片

hintPos 是CvPoint(10,400)

low = upp = CvScalar(10,10,10,10)

注意 :"损坏模式"是随机的,每次都在变化。

1 个答案:

答案 0 :(得分:0)

没有使用零值初始化掩码是一个问题。它看起来像这样:

filledArea = new CvMat( hue.Rows + 2, hue.Cols + 2, MatrixType.U8C1 );

DOESN' T将保留的内存初始化为任何值,这样就会损坏"#34;像素。

filledArea = new CvMat( hue.Rows + 2, hue.Cols + 2, MatrixType.U8C1, new CvScalar(0,0,0,0) );

创建一个0像素的遮罩。

我错了,我认为C#无法在没有先将其初始化为某个值的情况下获取新内存,就像Array []和List ...

一样