在opencv python中绘制直方图
我想通过处理前置摄像头视频来检测车辆的车道偏离。为此,我想水平选择每帧的一条像素线,并分析这些像素的颜色如何变化。为此,我想画R,G,B通道的直方图,它在x轴上有从左到右的像素数,在y轴上有相应的像素值。由于我对这个领域还不熟悉,我想知道如何使用opencv和python为视频中的每一帧绘制直方图?谢谢。这是图像的直方图(opencv+matplotlib):在opencv python中绘制直方图,python,opencv,image-processing,Python,Opencv,Image Processing,我想通过处理前置摄像头视频来检测车辆的车道偏离。为此,我想水平选择每帧的一条像素线,并分析这些像素的颜色如何变化。为此,我想画R,G,B通道的直方图,它在x轴上有从左到右的像素数,在y轴上有相应的像素值。由于我对这个领域还不熟悉,我想知道如何使用opencv和python为视频中的每一帧绘制直方图?谢谢。这是图像的直方图(opencv+matplotlib): 这里有两个关于绘制3D直方图的例子,可以参考 (一) (二) 如何选择这一像素?是手册吗?你能详细说明一下你到目前为止试过什么吗
这里有两个关于绘制3D直方图的例子,可以参考 (一) (二)
如何选择这一像素?是手册吗?你能详细说明一下你到目前为止试过什么吗?一个像素线?你是说这条线的宽度是一个像素吗?是的。我想选择一行代表道路区域颜色变化的图像。手动选择的路线始终穿过图像的道路区域。感谢您的帮助。是否有一种方法可以将图像中一行的像素移到x轴,将颜色值移到y轴,而不是将每个颜色值的像素总数移到y轴?
#!/usr/bin/python3
# 2017.12.20 14:00:12 CST
# 2018.01.06 19:07:57 CST
import matplotlib.pyplot as plt
import numpy as np
import cv2
img = cv2.imread("test.png")
b,g,r = cv2.split(img)
fig = plt.figure(figsize=(8,4))
ax = fig.add_subplot(121)
ax.imshow(img[...,::-1])
ax = fig.add_subplot(122)
for x, c in zip([b,g,r], ["b", "g", "r"]):
xs = np.arange(256)
ys = cv2.calcHist([x], [0], None, [256], [0,256])
ax.plot(xs, ys.ravel(), color=c)
ax.set_xlabel('X')
ax.set_ylabel('Y')
plt.show()