对图片进行腐蚀并生成当前图像的直方图
时间: 2024-01-12 14:05:47 浏览: 24
可以使用OpenCV库来对图片进行腐蚀,使用matplotlib库来生成当前图像的直方图。以下是一个简单的例子:
```
import cv2
import matplotlib.pyplot as plt
import numpy as np
# 读取图片
img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# 定义腐蚀核
kernel = np.ones((5,5), np.uint8)
# 对图片进行腐蚀
erosion = cv2.erode(img, kernel, iterations=1)
# 绘制图片
plt.imshow(erosion, cmap='gray')
# 生成直方图
hist = cv2.calcHist([erosion], [0], None, [256], [0, 256])
# 绘制直方图
plt.figure()
plt.hist(erosion.ravel(), 256, [0, 256])
plt.show()
```
解释一下代码:
- `import cv2`:导入OpenCV库。
- `import matplotlib.pyplot as plt`:导入matplotlib库,并给它取个别名plt。
- `import numpy as np`:导入numpy库。
- `img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)`:读取灰度图像。
- `kernel = np.ones((5,5), np.uint8)`:定义腐蚀核,这里使用一个5x5的全1矩阵。
- `erosion = cv2.erode(img, kernel, iterations=1)`:对图片进行腐蚀操作,iterations参数表示腐蚀的次数。
- `plt.imshow(erosion, cmap='gray')`:使用plt.imshow()函数绘制腐蚀后的图片,cmap参数表示使用灰度颜色映射。
- `hist = cv2.calcHist([erosion], [0], None, [256], [0, 256])`:使用cv2.calcHist()函数生成腐蚀后图片的直方图。其中,[erosion]为图片,[0]表示只统计灰度值,None表示不使用掩膜,[256]表示直方图的柱子数量,[0, 256]表示灰度值的范围。
- `plt.figure()`:创建一个新的图形窗口。
- `plt.hist(erosion.ravel(), 256, [0, 256])`:使用plt.hist()函数绘制腐蚀后图片的直方图。其中,erosion.ravel()表示将腐蚀后的图片展平成一维数组,256表示直方图的柱子数量,[0, 256]表示灰度值的范围。
- `plt.show()`:显示图形。