C ++功能是:
片刻(InputArray数组,bool binaryImage = false)
第一个我明白它是什么,第二个它说:
binaryImage - 如果为true,则将所有非零图像像素视为 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的平均颜色。