把一个图像名称为'pic3'的灰度图像转为灰度直方图,并保存起结果
时间: 2024-05-11 14:18:39 浏览: 108
下面是Python代码实现:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 读取灰度图像
img = cv2.imread('pic3.jpg', cv2.IMREAD_GRAYSCALE)
# 计算灰度直方图
hist, bins = np.histogram(img.ravel(), 256, [0, 256])
# 可视化灰度直方图
plt.hist(img.ravel(), 256, [0, 256])
plt.xlabel('Gray Level')
plt.ylabel('Number of Pixels')
plt.title('Gray Scale Histogram')
plt.show()
# 保存灰度直方图结果
np.savetxt('pic3_hist.txt', np.column_stack((bins[:-1], hist)), fmt='%d')
```
解释一下代码:
1. 首先使用 OpenCV 的 `imread` 函数读取灰度图像,并将其保存在 `img` 变量中。
2. 接着使用 NumPy 的 `histogram` 函数计算 `img` 的灰度直方图,得到直方图数组 `hist` 和直方图分组的边界数组 `bins`。
3. 使用 Matplotlib 的 `hist` 函数可视化 `hist`,并展示直方图。
4. 最后使用 NumPy 的 `savetxt` 函数将直方图结果保存在文件 `pic3_hist.txt` 中。
注意,本代码需要先安装 OpenCV 和 Matplotlib 库。
阅读全文