from skimage import data from matplotlib import pyplot as plt import numpy as np image = data.coffee() #载入 RGB 图像 #初始化灰度图像 max_gray = np.zeros(image.shape[0:2],dtype='uint8') ave_gray = np.zeros(image.shape[0:2],dtype='uint8') weight_gray = np.zeros(image.shape[0:2],dtype='uint8') for ii in range(image.shape[0]): for jj in range(image.shape[1]): r, g, b = image[ii, jj, :] #最大值灰度化方法 max_gray[ii, jj] = max(r, g, b) #平均值灰度化方法 ave_gray[ii, jj] = (r + g + b)/3 #加权平均灰度化方法 weight_gray[ii, jj] = 0.30 * r + 0.59 * g + 0.11 * b #显示结果 plt.figure() plt.axis('off') plt.imshow(image) #显示 RGB 图像 plt.figure() plt.axis('off') plt.imshow(max_gray, cmap='gray') #显示最大值灰度化图像 plt.figure() plt.axis('off') plt.imshow(ave_gray, cmap='gray') #显示平均值灰度化图像 plt.figure() plt.axis('off') plt.imshow(weight_gray, cmap='gray') #显示加权平均灰度化图像.纠正这段代码使其能运行。
时间: 2023-12-10 12:40:43 浏览: 81
以下是纠正后的代码:
```python
from skimage import data
from matplotlib import pyplot as plt
import numpy as np
image = data.coffee() # 载入 RGB 图像
# 初始化灰度图像
max_gray = np.zeros(image.shape[0:2], dtype='uint8')
ave_gray = np.zeros(image.shape[0:2], dtype='uint8')
weight_gray = np.zeros(image.shape[0:2], dtype='uint8')
for ii in range(image.shape[0]):
for jj in range(image.shape[1]):
r, g, b = image[ii, jj, :]
# 最大值灰度化方法
max_gray[ii, jj] = max(r, g, b)
# 平均值灰度化方法
ave_gray[ii, jj] = (r + g + b)//3
# 加权平均灰度化方法
weight_gray[ii, jj] = 0.30 * r + 0.59 * g + 0.11 * b
# 显示结果
plt.figure()
plt.axis('off')
plt.imshow(image) # 显示 RGB 图像
plt.figure()
plt.axis('off')
plt.imshow(max_gray, cmap='gray') # 显示最大值灰度化图像
plt.figure()
plt.axis('off')
plt.imshow(ave_gray, cmap='gray') # 显示平均值灰度化图像
plt.figure()
plt.axis('off')
plt.imshow(weight_gray, cmap='gray') # 显示加权平均灰度化图像
```
主要更改包括:
1. `//` 替换了 `/`,以确保平均值灰度化方法得到整数结果;
2. `plt.show()` 被省略,因为在 Jupyter Notebook 等交互式环境中,通常不需要调用该函数来显示图像。
阅读全文