Python3将数组从(x,y,3)减少为(x,y,1)(rgb转灰度)

2024-05-13 17:54:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python还不熟悉,因此我可能会冒着被复制的风险(但我还不知道如何向web询问)。在

我已经编写了以下方法。它将数组(ROWS,COLS,3)转换为数组(ROWS,COLS,1)

def convert_greyscale( rgb ):
    rgb_greyscale = np.zeros( (rgb.shape[0],rgb.shape[1]), dtype=np.uint8)
    for row in range(0, rgb.shape[0]:
        for col in range(0, rgb.shape[1]):
            rgb_greyscale[row][col] = int(0.2126 * rgb[row][col][0] + 0.7152 * rgb[row][col][1] + 0.0722 * rgb[row][col][2])
    return rgb_greyscale

遗憾的是我没能把它复制得更短。已经有人在帖子中提到了用美国运输部然而,它与我的小函数的结果不同。在

如何使用更高效(lambda)或至少更优雅的表达式重写此代码?在

这种方法有效吗?在


Tags: 方法inwebfornprangecolrgb
1条回答
网友
1楼 · 发布于 2024-05-13 17:54:31

您可以简单地使用:

return (0.2126*rgb[:,:,0]+0.7152*rgb[:,:,1]+0.0722*rgb[:,:,2])\
           .astype(np.uint8)

这里不需要循环,让numpy来做迭代。在

相关问题 更多 >