使用Numpy将rgb像素阵列转换为灰度

时间:2017-02-01 04:00:24

标签: python arrays numpy image-processing

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

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

我该怎么做?

注意:如果我有原始图像并且可以先使用Pillow进行灰度图像,这将非常简单,但我没有。

更新:

我正在寻找的功能是np.dot()

从问题的答案

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

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

我们可以np.dot(rgb[...,:3], [.3, .6, .1])来获取我正在寻找的内容,这是一个仅限灰色值的二维数组。

1 个答案:

答案 0 :(得分:12)

查看another thread中的答案。

本质:

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