使用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])
来获取我正在寻找的内容,这是一个仅限灰色值的二维数组。
答案 0 :(得分:12)
查看another thread中的答案。
本质:
gray = 0.2989 * r + 0.5870 * g + 0.1140 * b
np.dot(rgb[...,:3], [0.299, 0.587, 0.114])