python - 如何使用每个像素的所有通道的平均值将批次中的所有图像从 rgb 转换为灰度
问题描述
我有一批图像,(32, 32, 3, 73257)
每个图像的形状都是 32x32,我想通过在每个通道上取平均值来将每个图像的 RGB 转换为灰度。我知道还有其他方法,但我的要求是取平均值。
我想不出我可以将这个平均的东西应用到整个批次然后减少 3 到 1 的逻辑。有人可以帮我吗?我尝试查看 StackOverflow 和其他内容,但找不到任何令人满意的答案。
解决方案
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, :]
推荐阅读
- arrays - 将 3D 坐标从字符串转换为 numpy 数组中的浮点数的最快方法
- javascript - 在 IE 8 中有时无法访问对象
- typescript - Typescript 中的 Modulus(%) 运算符无法正确处理大数字
- logging - IndexedDB - 防止 indexeddb.sqlite3-wal 文件增长到 GB
- excel - 日期戳代码和数据覆盖问题
- mongodb - 让查找带有objectId
- scala - rlike 语句时编写巨大的功能方式
- php - PHP7.3 on eregi
- excel - VBA:访问 IE 'Do While' 的自动化错误
- android - API 29 webview net::ERR_CLEARTEXT_NOT_PERMITTED