OpenCV - moment()函数中的参数

时间:2017-02-21 18:52:07

标签: c++ opencv image-processing feature-extraction descriptor

C ++功能是:

  

片刻(InputArray数组,bool binaryImage = false)

第一个我明白它是什么,第二个它说:

  

binaryImage - 如果为true,则将所有非零图像像素视为   1分的。该参数仅用于图像。

这究竟是什么意思?我说这对于二进制图像是正确的而对于非二进制图像是假的吗?在我的应用程序中,我使用二进制图像来计算简单的时刻。

1 个答案:

答案 0 :(得分:2)

这意味着如果此值为true,则您插入的图像将被视为二进制图像,这意味着即使您的值大于1,它们也将被视为1。

I(x,y)> 0 = 1

I(x,y)== 0 = 0

如果您插入的值为false,则矩值中的值将实际值转换为矩值计算。

例如,假设您有以下3X3图像:

100 0 10

10 0 1

0 0 0

m00这是图像的区域:

如果标志为真,则我们有4个非零像素,值为4.

如果标志为假,我们将有100 + 10 + 10 + 1 = 121

什么时候应该使用什么?

让我们说我们的形象中有一个斑点。 如果我们将图像视为二进制而不是时刻将为我们提供有关blob的空间信息。 例如,m01 / m00和m10 / m00将给出物体的质心。

但是,如果我们将图像视为二进制不是我们而不是时刻会给我们纹理/颜色信息。 例如,m00 /(blob中的像素数)= blob的平均颜色。