【问题标题】:Use Numpy to convert rgb pixel array into grayscale [duplicate]使用 Numpy 将 rgb 像素数组转换为灰度 [重复]
【发布时间】:2017-06-17 17:18:09
【问题描述】:

使用 Numpy 将大小为 (x, y, 3) 的 rgb 像素值数组转换为大小为 (x, y, 1) 的灰度像素值数组的最佳方法是什么?

我有一个函数 rgbToGrey(rgbArray) 可以获取 [r,g,b] 数组并返回灰度值。我想将它与 Numpy 一起使用,将我的数组的第 3 维从 3 号缩小到 1 号。

我该怎么做?

注意:如果我有原始图像并且可以先使用 Pillow 对其进行灰度化,这将非常容易,但我没有它。

更新:

我要找的函数是np.dot()

从这个问题的答案

假设我们通过公式将rgb转换为灰度:

.3r * .6g * .1b = 灰色,

我们可以通过np.dot(rgb[...,:3], [.3, .6, .1]) 得到我正在寻找的东西,一个只有灰色值的二维数组。

【问题讨论】:

    标签: python arrays numpy image-processing


    【解决方案1】:

    查看another thread中的答案。

    基本上:

    gray = 0.2989 * r + 0.5870 * g + 0.1140 * b
    np.dot(rgb[...,:3], [0.299, 0.587, 0.114])
    

    【讨论】:

    • 谢谢,这是我需要的 np.dot() 方法!
    • 您能告诉我如何将 rgb 数组转换为黑白图像吗?还是我应该问新问题?
    • @ganeshdeshmukh 您可以使用 PIL Image 的 fromarray 函数。使用这里提到的方法将rgb数组转换为灰度,然后im = Image.fromarray(grey_array)。如果传入 rgb 数组,则可以得到彩色图像 Image.fromarray(rgb_array, mode='RGB')
    • 或者:rgb[..., :3] @ [0.299, 0.587, 0.114]numpy.org/doc/stable/reference/generated/numpy.matmul.html
    猜你喜欢
    • 2021-04-02
    • 1970-01-01
    • 2014-02-26
    • 2014-12-22
    • 2012-11-09
    • 2020-09-02
    • 2018-12-19
    • 2013-10-25
    相关资源
    最近更新 更多