def rgb2gray(rgb): grayimg = np.dot(rgb[..., :3], [0.2989, 0.5870, 0.1140]) return grayimg 写一段替代以上程序的代码
时间: 2024-09-19 18:02:56 浏览: 24
python将txt文件读入为np.array的方法
这段代码是一个用于将RGB颜色图像转换为灰度图像的小片段,使用了线性加权平均的方法。你可以通过这种方法创建一个新的函数,如下面所示:
```python
def rgb2gray_alternative(img):
"""
将输入的RGB彩色图像转换为灰度图像,采用常用的加权平均公式。
参数:
img (np.ndarray): 形状为(H x W x 3)的 RGB 彩色图像,其中最后一个维度表示RGB通道
返回值:
gray_img (np.ndarray): 形状为(H x W)的灰度图像
"""
R, G, B = img[:, :, 0], img[:, :, 1], img[:, :, 2] # 提取RGB三个通道
gray_img = 0.2989 * R + 0.5870 * G + 0.1140 * B # 应用灰度转换公式
return gray_img.astype(np.uint8)
```
在这个版本中,我们假设 `img` 是一个三维数组,前两个维度是高度和宽度,第三个维度是RGB通道。我们直接对每个像素的RGB分量应用灰度转换公式,然后返回结果。注意最后可能需要将结果转换回整数类型,这里假设为 `uint8`,实际使用时可以根据需求调整。
阅读全文