首页 > 解决方案 > 如何使用每个像素的所有通道的平均值将批次中的所有图像从 rgb 转换为灰度

问题描述

我有一批图像,(32, 32, 3, 73257)每个图像的形状都是 32x32,我想通过在每个通道上取平均值来将每个图像的 RGB 转换为灰度。我知道还有其他方法,但我的要求是取平均值。

我想不出我可以将这个平均的东西应用到整个批次然后减少 3 到 1 的逻辑。有人可以帮我吗?我尝试查看 StackOverflow 和其他内容,但找不到任何令人满意的答案。

标签: pythonimagenumpy

解决方案


img_arr.shape

>>> (32, 32, 3, 73257)
img_arr = np.average(img_arr, axis= 2).astype(int)
img_arr.shape

>>> (32, 32, 73257)

如果你想保持他的形状

img_arr = img_arr[..., np.newaxis, :]

推荐阅读