可以给我一段代码,实现打开一张图片,对打开的图片实现常规的直方图均衡,在此基础上能够有用户交互的规定直方图均衡
时间: 2023-06-03 21:08:04 浏览: 97
图像的直方图均衡算法的代码
5星 · 资源好评率100%
代码如下:
```python
import cv2
# 打开一张图片
img = cv2.imread('image.jpg')
# 对打开的图片实现常规的直方图均衡
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
equalized_img = cv2.equalizeHist(gray_img)
# 显示原图和处理后的图片
cv2.imshow('Original Image', img)
cv2.imshow('Equalized Image', equalized_img)
# 有用户交互的规定直方图均衡
def equalize_with_input(clipLimit, tileGridSize):
clahe = cv2.createCLAHE(clipLimit=clipLimit, tileGridSize=tileGridSize)
equalized_img = clahe.apply(gray_img)
cv2.imshow('Equalized Image', equalized_img)
# 使用滑动条实现用户交互
cv2.namedWindow('Equalized Image')
cv2.createTrackbar('clipLimit', 'Equalized Image', 2, 50, lambda x: equalize_with_input(x, tileGridSize))
cv2.createTrackbar('tileGridSize', 'Equalized Image', 8, 64, lambda x: equalize_with_input(clipLimit, x))
# 持续显示图片,直到按下任意键
cv2.waitKey(0)
# 关闭所有窗口
cv2.destroyAllWindows()
```
运行这段代码后,会打开一张图片并实现常规的直方图均衡。同时,会弹出一个交互窗口,包含两个滑动条,可以控制 `clipLimit` 和 `tileGridSize` 两个参数,使用户可以自定义规定直方图均衡。用户在滑动滑动条时,会不断更新展示出来的处理后的图片。用户可以自由调整滑动条,得到他们希望的均衡化效果。
阅读全文