python灰度直方图统计及显示
时间: 2024-02-06 16:12:03 浏览: 100
好的,下面是Python灰度直方图统计及显示的代码示例:
```python
import cv2
import matplotlib.pyplot as plt
# 读取灰度图像
img = cv2.imread('image.jpg', 0)
# 统计灰度直方图
hist, bins = cv2.calcHist([img], [0], None, [256], [0, 256])
# 显示灰度直方图
plt.plot(hist)
plt.show()
```
以上代码中,使用OpenCV库中的`cv2.imread()`函数读取一张灰度图像,并使用`cv2.calcHist()`函数统计灰度直方图。最后使用`matplotlib`库中的`plot()`函数显示灰度直方图。
相关问题
自己用python代码编写函数实现灰度直方图统计以及灰度直方图均衡化,并绘制灰度直方图及均衡化后的灰度直方图,显示初始图像及均衡化后的图像
好的,以下是Python代码实现:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 灰度直方图统计
def calcGrayHist(image):
# 计算图像的灰度直方图
rows, cols = image.shape
grayHist = np.zeros([256], np.uint64)
for r in range(rows):
for c in range(cols):
grayHist[image[r][c]] += 1
return grayHist
# 灰度直方图均衡化
def equalizeHist(image):
# 获取灰度直方图
grayHist = calcGrayHist(image)
# 计算累计灰度直方图
zeroCumuMoment = np.zeros([256], np.uint64)
for p in range(len(grayHist)):
if p == 0:
zeroCumuMoment[p] = grayHist[0]
else:
zeroCumuMoment[p] = zeroCumuMoment[p-1] + grayHist[p]
# 计算映射表
pixelNum = image.shape[0] * image.shape[1]
zeroCumuMoment = np.round(zeroCumuMoment / pixelNum * 255)
histEqImage = np.zeros(image.shape, np.uint8)
for r in range(image.shape[0]):
for c in range(image.shape[1]):
histEqImage[r][c] = zeroCumuMoment[image[r][c]]
return histEqImage
# 读取图像
image = cv2.imread('test.png', 0)
# 统计灰度直方图
grayHist = calcGrayHist(image)
# 绘制灰度直方图
plt.figure()
plt.bar(range(256), grayHist, width=1.0, edgecolor='none')
plt.title('Gray Histogram')
plt.xlabel('Gray Level')
plt.ylabel('Pixel Number')
plt.show()
# 灰度直方图均衡化
histEqImage = equalizeHist(image)
# 统计均衡化后的灰度直方图
histEq = calcGrayHist(histEqImage)
# 绘制均衡化后的灰度直方图
plt.figure()
plt.bar(range(256), histEq, width=1.0, edgecolor='none')
plt.title('Equalized Histogram')
plt.xlabel('Gray Level')
plt.ylabel('Pixel Number')
plt.show()
# 显示初始图像
cv2.imshow('Original Image', image)
# 显示均衡化后的图像
cv2.imshow('Histogram Equalization Image', histEqImage)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,`calcGrayHist` 函数用于计算图像的灰度直方图,`equalizeHist` 函数用于实现灰度直方图均衡化。代码中还包括绘制灰度直方图和均衡化后的灰度直方图的函数,以及显示初始图像和均衡化后的图像的相关代码。
python 灰度直方图
灰度直方图是对图像中每个灰度级出现的频率进行统计的图表。直方图均衡化是一种能够通过调整图像灰度级的分布来增强图像对比度和灰度色调变化的方法。在Python中,可以使用skimage库的exposure模块来计算和展示灰度直方图。
以下是一个示例代码,展示了如何使用skimage库计算和展示灰度直方图:
```
from skimage import data, exposure
import matplotlib.pyplot as plt
# 读取图像
img = data.moon()
# 计算直方图
hist, bins = exposure.histogram(img)
# 绘制直方图
plt.plot(bins, hist, color='red')
plt.xlabel('灰度级')
plt.ylabel('频率')
plt.title('灰度直方图')
plt.show()
```
通过上述代码,我们可以得到图像的灰度直方图。该直方图显示了图像中每个灰度级的出现频率。
阅读全文