用python写一个用 直方图均衡化法实现对比度调节的程序
时间: 2023-08-30 17:04:07 浏览: 32
好的,以下是一个用直方图均衡化法实现对比度调节的Python程序:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg', 0)
# 直方图均衡化
equ = cv2.equalizeHist(img)
# 显示原图和处理后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Equalized Image', equ)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
解释一下上面的代码:
首先,我们使用`cv2.imread()`函数读取一张灰度图像,并将其赋值给变量`img`。
然后,我们使用`cv2.equalizeHist()`函数对图像进行直方图均衡化处理,并将处理后的图像保存到变量`equ`中。
最后,我们使用`cv2.imshow()`函数展示原始图像和均衡化后的图像,并使用`cv2.waitKey()`等待用户按下任意键,最后使用`cv2.destroyAllWindows()`关闭所有的窗口。
注意:如果你要尝试这个程序,需要将`image.jpg`替换成你自己的图片路径。
相关问题
python 直方图均衡化_直方图均衡化-Python实现
直方图均衡化是一种常见的图像增强方法,可以通过扩展图像的动态范围来增强图像的对比度。在Python中,可以使用OpenCV库实现直方图均衡化。
下面是实现直方图均衡化的代码示例:
```python
import cv2
# 读取图像
img = cv2.imread('image.jpg', 0)
# 进行直方图均衡化
equ = cv2.equalizeHist(img)
# 显示原始图像和均衡化后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Equalized Image', equ)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,我们首先使用`cv2.imread()`函数读取图像,然后使用`cv2.equalizeHist()`函数对图像进行直方图均衡化。最后,使用`cv2.imshow()`函数显示原始图像和均衡化后的图像,并使用`cv2.waitKey()`函数等待用户按下任意按键,最后使用`cv2.destroyAllWindows()`函数关闭所有窗口。
需要注意的是,直方图均衡化通常只适用于灰度图像,如果要对彩色图像进行直方图均衡化,需要将图像从RGB空间转换到HSV空间,并对亮度通道进行直方图均衡化,然后再将图像转换回RGB空间。
opencv用python环境,找个对比度低的图片,显示其直方图并用直方图均衡化提高其对比度
好的,以下是回答:
首先,需要安装 OpenCV 库和 matplotlib 库,可以使用 pip install opencv-python 和 pip install matplotlib 命令进行安装。
然后,可以使用以下代码加载图片并显示其直方图:
```python
import cv2
from matplotlib import pyplot as plt
# 读取图片
img = cv2.imread('image.jpg', 0)
# 显示原始图片
plt.subplot(121)
plt.imshow(img, cmap='gray')
plt.title('Original Image')
# 显示直方图
plt.subplot(122)
plt.hist(img.ravel(), 256, [0,256])
plt.title('Histogram')
plt.show()
```
其中,img = cv2.imread('image.jpg', 0) 读取灰度图片,并使用 plt.imshow(img, cmap='gray') 显示灰度图片。同时,使用 plt.hist(img.ravel(), 256, [0,256]) 绘制直方图。
接下来,可以使用以下代码进行直方图均衡化:
```python
# 直方图均衡化
equ = cv2.equalizeHist(img)
# 显示均衡化后的图片和直方图
plt.subplot(121)
plt.imshow(equ, cmap='gray')
plt.title('Equalized Image')
plt.subplot(122)
plt.hist(equ.ravel(), 256, [0,256])
plt.title('Histogram after Equalization')
plt.show()
```
其中,cv2.equalizeHist(img) 对原始图片进行直方图均衡化,得到均衡化后的图片。然后,使用 plt.imshow(equ, cmap='gray') 显示均衡化后的图片,使用 plt.hist(equ.ravel(), 256, [0,256]) 绘制均衡化后的直方图。
这样,就可以对比度低的图片进行直方图均衡化,提高其对比度了。