Imread 灰度与 imread + 转换为灰度不同[重复]

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

在使用 OpenCV 时,我发现了一种奇怪的行为,而我的知识无法解释它。 也许有人会给出答案。

image= cv.imread("image.jpg", 0)
__, thre = cv.threshold(image, 1, 255, cv.THRESH_BINARY)
plt.imshow(thre)

result

image = cv.imread("image.jpg")
image=  cv.cvtColor(output, cv.COLOR_BGR2GRAY)
__, thre = cv.threshold(image, 1, 255, cv.THRESH_BINARY) 
plt.imshow(thre)

result 2

正如您所看到的,这两个图像有点不同。 有人可以解释一下为什么使用带标志 0(灰度)的 imread 会产生与使用不带标志的 imread 不同的结果,然后将其转换为灰度。

是因为 cvtColor 标志吗?

python opencv grayscale imread
1个回答
0
投票

我不确定这是否是您观察到的效果的原因,但我想指出,RGB到灰度转换存在两种不同的方式:即使用均值和使用加权平均值,在以后的情况下可能会使用不同的权重使用,

cvtColor()
据说使用以下公式

Y = 0.299*R + 0.587*G + 0.114*B

链接文章中还提供了另一个公式,其权重根据人类感知进行了调整,如下

Z = 0.2126*R + 0.7152*G + 0.0722*B

请注意,上述转换是幂等的,您可能会不小心将已经灰度的图像输入其中。

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