使用Numpy将大小为(x, y, 3)的RGB像素值数组转换为大小为(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])来得到我要找的东西,一个只有灰度值的2d数组。
我有一个函数rgbToGrey(rgbArray),可以将[r,g,b]数组转换为灰度值。我想与Numpy一起使用它,将数组的第三维从大小3缩小到大小1。
我该如何做?
注意:如果我有原始图像并可以使用Pillow将其变成灰度图像,那么这将非常容易,但我没有原始图像。
更新:
我要找的函数是np.dot()。
根据这个问题的回答:
假设我们通过公式将rgb转换为灰度: .3r * .6g * .1b = 灰度, 我们可以使用np.dot(rgb[...,:3], [.3, .6, .1])来得到我要找的东西,一个只有灰度值的2d数组。
rgb[..., :3] @ [0.299, 0.587, 0.114]
。请参见https://numpy.org/doc/stable/reference/generated/numpy.matmul.html。 - Robz