【问题标题】:Modeling HSV color space cone with Python and Matplotlib 3D使用 Python 和 Matplotlib 3D 对 HSV 颜色空间锥进行建模
【发布时间】:2017-01-19 12:49:36
【问题描述】:

我想在 python 中创建HSV cone

尝试修改another question中给出的MATLAB解决方案:

import numpy as np
import cv2

H = np.repeat([np.linspace(0, 179, 100)], 100, axis=0)
S = np.repeat([np.concatenate((np.linspace(0, 255, 50), np.linspace(255, 0, 50)))], 100, axis=0).transpose()
V = np.repeat([np.concatenate((np.ones(50)*255, np.linspace(255, 0, 50)))], 100, axis=0).transpose()

hsv = np.asarray(cv2.merge((H, S, V)), dtype=np.uint8)
C = cv2.cvtColor(hsv, cv2.COLOR_HSV2RGB)

theta = np.linspace(0, 2*np.pi, 100)
X = np.asarray([np.zeros(100), np.cos(theta), np.zeros(100)])
Y = np.asarray([np.zeros(100), np.sin(theta), np.zeros(100)])
Z = np.asarray([2*np.ones(100), 2*np.ones(100), np.zeros(100)])

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

ax.plot_surface(X, Y, Z, color=C)

但出现错误:“无效的 rgba arg ... rgba 序列的长度应为 3 或 4”。

尝试使用 C.reshape(3, 100, 100) 重塑 C,但出现错误:“无效的 rgba arg ... 只有长度为 1 的数组可以转换为 Python 标量”

没有 arg color=C 我有这个:

HSV cone with ax.plot_surface(X, Y, Z)

谢谢!

【问题讨论】:

    标签: python matplotlib computer-vision hsv


    【解决方案1】:

    该错误已经告诉您,您只能将长度为 3 或 4 的序列作为 color 的参数。 color 参数基本上需要一种颜色(可以作为值列表给出(R,G,B)

    幸运的是,plot_surface() 中还有另一个参数,它允许您设置绘图的各个面的颜色,即facecolors

    ax.plot_surface(X, Y, Z, facecolors=C/255.)
    

    虽然这会起作用并且不会引发错误,但在图中所有颜色都接近灰色。这与数组 C 一致,但我不确定这是否符合预期。

    【讨论】:

      猜你喜欢
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 2015-10-10
      • 2016-10-08
      相关资源
      最近更新 更多