【问题标题】:how to gray scale a picture in python using rgb?如何使用 rgb 在 python 中对图片进行灰度化?
【发布时间】:2021-03-21 03:34:15
【问题描述】:

我正在编写一个函数(它必须在稍后被调用到主 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

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

【问题讨论】:

  • 您的函数返回图像中像素 (x, y) 的灰度值。你到底想做什么?如果要将 RGB 图像转换为灰度图像,请使用 grayscale_image = cv2.cvtColor(RGB_image, cv2.COLOR_BGR2GRAY)
  • 是的,这就是我希望做的。我认为我的教授希望我们通过取所有值的平均值来进行灰度化

标签: python opencv rgb grayscale


【解决方案1】:

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

首先,在你的 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,除非你必须自己实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-15
    • 2016-12-10
    • 1970-01-01
    • 2020-10-25
    • 2021-04-02
    • 1970-01-01
    • 2019-04-21
    • 1970-01-01
    相关资源
    最近更新 更多