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

Sea*_*int 8 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])我正在寻找的东西,一个只有灰色值的二维数组.

lan*_*nge 13

另一个主题中查看答案.

实质上:

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