Python 如何在OpenCV中绘制图像的三维直方图

Python 如何在OpenCV中绘制图像的三维直方图,python,opencv,matplotlib,3d,histogram,Python,Opencv,Matplotlib,3d,Histogram,[Update]我找到了更多的例子,现在我可以做了 我知道这个问题已经问过了,我试过了,但是没有用 我想要这样的东西 这就是我现在拥有的 我可以只使用plt.hist()来绘制三维条形图,还是需要更多的东西 我一直在搜索图像教程的3d直方图,但找不到任何直方图。这是我的结果: 代码: hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) h,s,v = cv2.split(hsv_image) fig = plt.figure(figsize

[Update]我找到了更多的例子,现在我可以做了

我知道这个问题已经问过了,我试过了,但是没有用

我想要这样的东西

这就是我现在拥有的

我可以只使用plt.hist()来绘制三维条形图,还是需要更多的东西

我一直在搜索图像教程的3d直方图,但找不到任何直方图。这是我的结果:


代码:

hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
h,s,v = cv2.split(hsv_image)

fig = plt.figure(figsize=(8,7))
ax = plt.axes(projection='3d'), plt.title("Histogram 3D")
plt.hist(h.ravel(), 256, [0, 256])
plt.hist(s.ravel(), 256, [0, 256])
plt.hist(v.ravel(), 256, [0, 256])
#!/usr/bin/python3
# 2017.12.20 14:00:12 CST
# 2017.12.20 14:26:08 CST

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
import cv2

img = cv2.imread("panda.png")
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
h,s,v = cv2.split(hsv)
fig = plt.figure()

ax = fig.add_subplot(111, projection='3d')
for x, c, z in zip([h,s,v], ['r', 'g', 'b'], [30, 20, 10]):
    xs = np.arange(256)
    ys = cv2.calcHist([x], [0], None, [256], [0,256])
    cs = [c] * len(xs)
    cs[0] = 'c'
    ax.bar(xs, ys.ravel(), zs=z, zdir='y', color=cs, alpha=0.8)

ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()