gpt4 book ai didi

python - 在 Python 中将 RGB 像素转换为灰度。没有matplot或PIL

转载 作者:行者123 更新时间:2023-12-02 17:06:36 30 4
gpt4 key购买 nike

我有一个家庭作业,我很想弄清楚。我们只在 opencv 上度过了两天的讲座,所以我对此一无所知。

任务是使用亮度公式 0.02126*R+0.7152*G+0.0722*B 将 RGB img 转换为灰度

所以每个像素的类型应该与原始图像相同。我们不允许使用 matplot 或 PIL,这是我看到很多试图解决这个问题的方法。

我现在的代码只输出一个灰色图像。所以不是graySCALE,它只是灰色的。我很迷茫,请帮助。

import cv2
import numpy as np
def togray():
img = cv2.imread("fruits.jpg")
cv2.imshow('Original',img)
height, width, channels = img.shape
img2 = np.ndarray (shape=(height,width,))
for i in range(height):
for j in range(width):
img2[i,j]=(0*0.2126 + 0.7152*1 + 0.0722*2)

cv2.imshow('Grayscale',img2)
cv2.waitKey(0)

togray()

最佳答案

尝试做img2 = 0.02126*img[:,:,2] + 0.7152*img[:, :,1] + 0.0722*img[:,:,0]
Julien 的评论是错误的,原因有两个:(i)图像的形状是 (m, n, 3)在opencv中。这就解释了为什么索引会给你一个更小的盒子。 (ii) opencv channel 是 BGR,而不是 RGB,因此您需要像我在这里所做的那样交换 2 和 0 索引。 (考虑到 R 和 B 项的贡献有多小,实际结果不应该有太大变化)。

关于python - 在 Python 中将 RGB 像素转换为灰度。没有matplot或PIL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53550817/

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