gpt4 book ai didi

python - 将图像转换为灰度

转载 作者:行者123 更新时间:2023-11-30 22:05:07 26 4
gpt4 key购买 nike

我想将任何图像转换为灰度,但我不明白这些实现之间的区别。

image = cv2.imread('lenna.jpg')
gray = cv2.cvtColor(image, cv2.IMREAD_GRAYSCALE)

gray1 = rgb2gray(image)

gray2 = cv2.imread('lenna.jpg', cv2.IMREAD_GRAYSCALE)

image1 = Image.open('lenna.jpg', 'r')
gray3 = image1.convert('L')

当我绘制它们时,我分别得到蓝色比例、绿色比例、绿色比例和灰色。我什么时候应该使用每一个?

最佳答案

您遇到了 Python 类型系统无法像 C++ 那样保护您的情况。

cv2.IMREAD_GRAYSCALEcv2.COLOR_BGR2GRAY 是来自不同枚举的值。前者的数值为0,适用于cv2.imread()。后者的数值为6,适用于cv2.cvtColor()。 C++ 会告诉您 cv2.IMREAD_GRAYSCALE 无法传递给 cv2.cvtColor()。 Python悄悄地接受相应的int值。

因此,您认为您要求 cv2 将彩色图像转换为灰度图像,但通过传递 cv2.IMREAD_GRAYSCALEcv2.cvtColor() 看到值 0,并认为您正在传递 cv2.COLOR_BGR2BGRA。您将获得添加了 Alpha channel 的原始图像,而不是灰度图像。

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

正是您所需要的。

假设您使用的是 Jupyter 笔记本,您看到的另一个问题是 cv2 按 BGR 顺序而不是 RGB 顺序对颜色平面进行分层。要正确显示它们,首先执行

image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

然后显示结果。

关于python - 将图像转换为灰度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53102654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com