二值化python直方图代码
时间: 2024-09-05 11:03:33 浏览: 49
二值化处理通常是指将图像的像素值从灰度范围转换为黑白两种颜色,即0和1。在Python中,可以使用图像处理库如OpenCV来进行二值化操作。下面是一个简单的示例代码,展示了如何使用OpenCV库对一张图像进行二值化处理,并绘制其直方图:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读取图像
image = cv2.imread('path_to_image.jpg', cv2.IMREAD_GRAYSCALE)
# 二值化处理
_, binary_image = cv2.threshold(image, 128, 255, cv2.THRESH_BINARY)
# 绘制直方图
plt.hist(image.ravel(), 256, [0, 256])
plt.title('Grayscale Histogram')
plt.xlabel('Pixel value')
plt.ylabel('Number of pixels')
plt.show()
# 如果需要,也可以绘制二值化图像的直方图
plt.hist(binary_image.ravel(), 2, [0, 2])
plt.title('Binary Histogram')
plt.xlabel('Pixel value')
plt.ylabel('Number of pixels')
plt.show()
```
在这段代码中,首先使用`cv2.imread`函数读取一张图像,并将其转换为灰度图。然后使用`cv2.threshold`函数进行二值化处理,参数128是阈值,255是当像素值高于阈值时分配的最大值,`cv2.THRESH_BINARY`是二值化操作的类型。
绘制原始灰度图像的直方图,显示在0到256像素值范围内的像素分布。接着绘制二值化图像的直方图,因为二值化图像的像素值只有0和255两种,所以在直方图上只会显示两个柱状图。