[英]Converting RGB pixels to Grayscale in Python. No matplot or PIL
我迫切需要解决一项家庭作业。 我们在opencv上只花了两天的演讲时间,所以我对此一无所知。
该任务是使用亮度公式0.02126 * R + 0.7152 * G + 0.0722 * B将RGB img转换为灰度
因此,每个像素的类型应与原始图像相同。 我们不允许使用matplot或PIL,这是我看到的很多尝试弄清楚的事情。
我现在的代码仅输出灰色图像。 因此,它不是灰色SCALE,而是灰色。 我很迷路,请帮助。
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]
朱利安的评论是错误的,原因有两个:(i (m, n, 3)
在opencv中(m, n, 3)
图像的形状为(m, n, 3)
。 这就解释了为什么索引为您提供了一个较小的框。 (ii)opencv通道是BGR,而不是RGB,因此您需要像在这里那样交换2和0索引。 (仅考虑R和B项的贡献,实际结果不应有太大变化)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.