在pycharm2023中编码实现直方图均衡化,并比较前后两幅图片的灰度直方图,要求使用下列函数:cv.imread("xxx.bmp",0)、plt.figure() plt.imshow() plt.show(),示例图片的文件路径为"C:\Users\27639\PycharmProjects\pythonProject\venv\class.jpg",请编码
时间: 2023-07-07 07:46:29 浏览: 118
好的,我来为您提供一份代码示例:
```python
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
# 读取灰度图像
img = cv.imread("C:\\Users\\27639\\PycharmProjects\\pythonProject\\venv\\class.jpg", 0)
# 直方图均衡化
img_eq = cv.equalizeHist(img)
# 计算原始图像和均衡化后图像的灰度直方图
hist_ori, bins_ori = np.histogram(img.flatten(), 256, [0, 256])
hist_eq, bins_eq = np.histogram(img_eq.flatten(), 256, [0, 256])
# 显示原始图像、均衡化后的图像、灰度直方图
plt.figure(figsize=(10, 5))
plt.subplot(221)
plt.imshow(img, cmap="gray")
plt.title("Original")
plt.axis("off")
plt.subplot(222)
plt.imshow(img_eq, cmap="gray")
plt.title("Equalized")
plt.axis("off")
plt.subplot(223)
plt.plot(bins_ori[:-1], hist_ori, color="b")
plt.title("Original Histogram")
plt.xlim([0, 256])
plt.ylim([0, 8000])
plt.subplot(224)
plt.plot(bins_eq[:-1], hist_eq, color="b")
plt.title("Equalized Histogram")
plt.xlim([0, 256])
plt.ylim([0, 8000])
plt.show()
```
这段代码首先通过 `cv.imread()` 读取指定路径下的灰度图像,然后使用 `cv.equalizeHist()` 进行直方图均衡化。接着使用 `np.histogram()` 函数计算原始图像和均衡化后图像的灰度直方图,并使用 `plt.plot()` 函数进行显示。最后使用 `plt.imshow()` 和 `plt.show()` 显示原始图像和均衡化后的图像。
阅读全文