OpenCV - moments() 函数中的参数
OpenCV - parameters in moments() function
C++函数是:
Moments moments(InputArray array, bool binaryImage=false )
第一个我明白它是什么,第二个它说:
binaryImage – If it is true, all non-zero image pixels are treated as
1’s. The parameter is used for images only.
这到底是什么意思?我说这只对二值图像是正确的,对非二值图像是错误的?在我的应用程序中,我使用二值图像来计算简单的时刻。
这意味着如果此值为真,您插入的图像将被视为二值图像,这意味着即使您的值大于 1,它们也将被视为 1。
我(x,y) > 0 = 1
我(x,y) == 0 = 0
如果您输入的值是假的,那么 moments 中的值将在 moments 计算中采用真实值。
例如,假设您有以下 3X3 图片:
100 0 10
10 0 1
0 0 0
m00 即图像的面积将是:
如果标志为真,则我们有 4 个非零像素,值将为 4。
如果标志为假,我们将有 100+10+10+1 = 121
什么时候应该使用什么?
假设我们的图像中有一个斑点。
如果我们将图像视为二元图像,那么矩将为我们提供有关斑点的空间信息。
例如 m01/m00 和 m10/m00 将给出物体的质心。
但是,如果我们不将图像视为二元图像,那么瞬间就会给我们 texture/color 信息。
例如 m00/(blob 中的像素数)= blob 的平均颜色。
C++函数是:
Moments moments(InputArray array, bool binaryImage=false )
第一个我明白它是什么,第二个它说:
binaryImage – If it is true, all non-zero image pixels are treated as 1’s. The parameter is used for images only.
这到底是什么意思?我说这只对二值图像是正确的,对非二值图像是错误的?在我的应用程序中,我使用二值图像来计算简单的时刻。
这意味着如果此值为真,您插入的图像将被视为二值图像,这意味着即使您的值大于 1,它们也将被视为 1。
我(x,y) > 0 = 1
我(x,y) == 0 = 0
如果您输入的值是假的,那么 moments 中的值将在 moments 计算中采用真实值。
例如,假设您有以下 3X3 图片:
100 0 10
10 0 1
0 0 0
m00 即图像的面积将是:
如果标志为真,则我们有 4 个非零像素,值将为 4。
如果标志为假,我们将有 100+10+10+1 = 121
什么时候应该使用什么?
假设我们的图像中有一个斑点。 如果我们将图像视为二元图像,那么矩将为我们提供有关斑点的空间信息。 例如 m01/m00 和 m10/m00 将给出物体的质心。
但是,如果我们不将图像视为二元图像,那么瞬间就会给我们 texture/color 信息。 例如 m00/(blob 中的像素数)= blob 的平均颜色。