opencv读取图片调整灰度值然后生成二维直方图
时间: 2023-07-18 15:29:58 浏览: 121
好的,以下是一个实现该功能的 Python 示例代码:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 读取图片并转为灰度图像
img = cv2.imread("image.jpg", 0)
# 计算灰度直方图
hist = cv2.calcHist([img], [0], None, [256], [0, 256])
# 显示灰度直方图
plt.hist(img.ravel(), 256, [0, 256])
plt.show()
# 计算二维直方图
hsv = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
hist2d = cv2.calcHist([hsv], [0, 1], None, [180, 256], [0, 180, 0, 256])
# 显示二维直方图
plt.imshow(hist2d, interpolation="nearest")
plt.show()
```
这个示例中,我们首先使用 imread() 函数读取了一张名为 image.jpg 的图片,并使用 cvtColor() 函数将其转为灰度图像。然后,使用 calcHist() 函数计算了该灰度图像的灰度直方图,并使用 Matplotlib 库的 hist() 函数显示出来。
接着,我们使用 cvtColor() 函数将灰度图像转为 BGR 彩色图像,并使用 calcHist() 函数计算了该 BGR 彩色图像的二维直方图。最后,使用 Matplotlib 库的 imshow() 函数显示出来。运行程序后,会分别弹出两个窗口,一个显示灰度直方图,另一个显示二维直方图。
需要注意的是,这个示例中的二维直方图是使用 H-S 坐标系计算的,如果需要使用其他坐标系,需要修改相应的参数。
阅读全文