图像灰度直方图均衡化python
时间: 2023-07-08 21:55:45 浏览: 126
好的,下面是图像灰度直方图均衡化的Python代码示例:
```python
import cv2
import numpy as np
# 读取图片
img = cv2.imread('image.jpg', 0)
# 计算灰度直方图
hist, bins = np.histogram(img.flatten(), 256, [0, 256])
# 计算累积分布函数
cdf = hist.cumsum()
cdf_normalized = cdf * hist.max() / cdf.max()
# 进行直方图均衡化
img_eq = np.interp(img.flatten(), bins[:-1], cdf_normalized).reshape(img.shape)
# 显示原图和均衡化后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Equalized Image', img_eq)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
上述代码中,我们首先使用`cv2.imread()`函数读取一张灰度图像,然后使用`np.histogram()`函数计算图像的灰度直方图。接着,我们计算图像的累积分布函数,并将其归一化。最后,我们使用`np.interp()`函数对原图像进行直方图均衡化,并将处理后的图像保存在`img_eq`中。最后,我们使用`cv2.imshow()`函数分别显示原图和均衡化后的图像。
相关问题
图像灰度直方图均衡化python代码
图像灰度直方图均衡化可以提高图像的对比度和亮度,可以使用 OpenCV 中的 equalizeHist 函数实现。以下是一个简单的 Python 代码示例:
```python
import cv2
# 读取图像
img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# 直方图均衡化
equalized = cv2.equalizeHist(img)
# 显示原图和均衡化后的图像
cv2.imshow('Original', img)
cv2.imshow('Equalized', equalized)
# 等待按键
cv2.waitKey(0)
# 释放资源
cv2.destroyAllWindows()
```
在代码中,我们首先使用 imread 函数读取一张灰度图像,并将其存储在 img 变量中。然后,我们使用 equalizeHist 函数对图像进行直方图均衡化,并将结果存储在 equalized 变量中。最后,我们使用 imshow 函数显示原图和均衡化后的图像,并等待按键。注意,在显示图像之后,我们需要使用 destroyAllWindows 函数释放资源。
需要注意的是,这里使用的是灰度图像,如果要对彩色图像进行直方图均衡化,需要先将其转换为灰度图像。
将原图像转化为灰度图,并进行图像灰度直方图均衡化python代码
将原图像转化为灰度图并进行灰度直方图均衡化可以使用以下 Python 代码实现:
```python
import cv2
# 读取彩色图像
img = cv2.imread('image.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 直方图均衡化
equalized = cv2.equalizeHist(gray)
# 显示原图和均衡化后的图像
cv2.imshow('Original', gray)
cv2.imshow('Equalized', equalized)
# 等待按键
cv2.waitKey(0)
# 释放资源
cv2.destroyAllWindows()
```
在上面的代码中,我们首先使用 imread 函数读取一张彩色图像,并将其存储在 img 变量中。然后,我们使用 cvtColor 函数将图像转换为灰度图像,并将结果存储在 gray 变量中。接下来,我们使用 equalizeHist 函数对灰度图像进行直方图均衡化,并将结果存储在 equalized 变量中。最后,我们使用 imshow 函数显示原图和均衡化后的图像,并等待按键。注意,在显示图像之后,我们需要使用 destroyAllWindows 函数释放资源。
阅读全文