请用opencv写一段直方图均衡化代码
时间: 2023-05-19 22:06:40 浏览: 111
当然可以,以下是一段使用 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()
```
这段代码会读取名为 "image.jpg" 的图像,然后对其进行直方图均衡化,并显示原图和均衡化后的图像。
相关问题
写一段直方图均衡化的代码
直方图均衡化是一种常见的图像增强技术,它通过对图像灰度级的概率分布进行重新分配,使得图像的整体对比度得到提升。在Python中,我们可以使用OpenCV库来实现直方图均衡化。以下是一个简单的代码示例:
```python
import cv2
import numpy as np
def histogram_equalization(image):
# 将图像转换为灰度图像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 计算灰度图像的直方图
hist, bins = np.histogram(gray_image.flatten(), 256, [0, 256])
# 归一化直方图
cdf = hist.cumsum()
cdf_normalized = cdf * hist.max() / cdf.max()
# 使用累积分布函数计算新的像素值
eq_image = np.interp(gray_image.flatten(), bins[:-1], cdf_normalized).reshape(gray_image.shape)
return eq_image
# 示例用法
image_path = 'path_to_your_image.jpg'
input_image = cv2.imread(image_path)
equalized_image = histogram_equalization(input_image)
cv2.imshow('Original Image', input_image)
cv2.imshow('Equalized Image', equalized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个代码中,`cv2.cvtColor`用于颜色空间转换,`np.histogram`用于计算直方图,`cdf`表示累积分布函数,`np.interp`则用于根据累积分布函数对原始像素值进行映射,从而达到直方图均衡的效果。
基于OpenCV3和Python3写一段直方图均衡化算法
import cv2
import numpy as np
# 读取图像
img = cv2.imread('input.jpg', 0)
# 直方图均衡化
equ = cv2.equalizeHist(img)
# 显示原图和处理后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Equalized Image', equ)
cv2.waitKey(0)
# 保存处理后的图像
cv2.imwrite('output.jpg', equ)
阅读全文