如何使用rgb对python中的图片进行灰度缩放?

问题描述

我正在编写一个函数(它必须稍后被调用到主 py 文件中,在那里我获取 rgb 值,将它们相加,然后对它们求平均值以获得灰色图片。这是我目前所拥有的:

def gray_scale(img,x,y): 
    pixel=img[x][y]
    r= pixel[0]
    g=pixel[1]
    b=pixel[2]
   return(r+g+b)/3

我必须在我的主文件调用这个函数(我也遇到了这个问题,因为我不确定如何使用参数。我不确定我做错了什么

解决方法

我假设您的问题是如何使用此函数将图像转换为灰度。

首先,在你的 main.py 中:

for x in range(img.shape[0]):
    for y in range(img.shape[1]):
        gray_pixel = gray_scale(img[x][y])
        grayscaled_image[x][y] = gray_pixel

假设您的图像支持 shape 属性。如果是 Numpy 数组,则是。

gray_scale 函数看起来像这样:

def gray_scale(pixel_value): 
    r = pixel[0]
    g = pixel[1]
    b = pixel[2]

    return (r + g + b) / 3

这就是上面代码中发生的事情。您的 main.py 迭代图像中的所有像素。这些像素(每个像素都是一个包含 R、G 和 B 值的数组)被发送到 gray_scale 函数。

该函数计算灰度值并返回它。这个灰度值存储在 gray_pixel 变量中。

然后将这个灰度化的像素插入到 grayscaled_image 中的适当位置。

显然,正如@DinosaurMoritz 指出的那样,更优化和更简单的方法是使用 OpenCV,除非您必须自己实现。