2017-01-19 3 views
0

파이썬에서 HSV cone을 만들고 싶습니다. another question에 주어진 MATLAB에 대한 솔루션을 적용하는 시도 파이썬 및 Matplotlib 3D HSV 색 공간 콘 모델링

: "잘못된 RGBA 인수 ...를 RGBA 시퀀스의 길이가해야 하나 3 또는 4"

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) 

는하지만 오류가 발생했습니다.

:이있어 인수 color=C없이

"유일한 길이-1 어레이는 파이썬 스칼라로 변환 할 수 있습니다 잘못된 RGBA 인수 ..."

C.reshape(3, 100, 100)와 C를 바꿀 시도하지만 오류가 발생했습니다

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

고마워요!

답변

1

오류는 이미 color의 인수로만 길이 3 또는 4의 시퀀스를 가질 수 있음을 알려줍니다. 색상 인수는 기본적으로 하나 개의 단일 색상 (이 값 (R,G,B) 목록으로 제공 할 수 것으로 기대하고있다. 다행히

, 당신은 즉 facecolors 플롯의 각면의 색상을 설정할 수 있습니다 plot_surface() 다른 인수가 있습니다.

이 모든 색상은 회색에 가까운 플롯에 오류가 발생 작동하지 않습니다 동안
ax.plot_surface(X, Y, Z, facecolors=C/255.) 

.이 배열 C와 일치하지만, 난이 예상 할 수 있는지 확실하지 않습니다.