OpenCV - moment()函数中的参数

问题描述 投票:2回答:1

C ++函数是:

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

第一个我理解它是什么,第二个它说:

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

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

c++ opencv image-processing feature-extraction descriptor
1个回答
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 /(斑点中的像素数)=斑点的平均颜色。

© www.soinside.com 2019 - 2024. All rights reserved.