我的电脑配置是Mac Mojave 10.14.4。我刚接触Python,所以我使用Jupyter Lab以便了解每个部分的作用,请您做出类似的回应。
我想生成一个数字印花织物样品的三维表面图,其中z轴绘制颜色空间。
这是实体文件。
[
]
这是同一测试织物的3dContour图。
我想生成一个数字印花织物样品的三维表面图,其中z轴绘制颜色空间。
这是实体文件。
[
![Test Sample Dots Print](https://istack.dev59.com/k6zfv.webp)
这是同一测试织物的3dContour图。
img = cv2.imread(testROYGBIVB.jpg) img - cv2.cvtColor(img,
cv2.COLOR_BGR2HSV)
plt.imshow(img)
img0 = img
img0.shape
(70, 90,3)
x, y, z = img0.T
x = np.linspace(0, 7, 70) #start, step, total
y = np.linspace(0, 9, 90)
X, Y = np.meshgrid(x, y)
Z = np.invert(z) #makes it easier to view
font = {'family': 'sans-serif',
'color': 'black',
'weight': 'normal',
'size': 16,
}
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.contour3D(X, Y, Z, 256, cmap='cubehelix_r')
ax.set_xlabel('x',fontdict=font)
ax.set_ylabel('y',fontdict=font)
ax.set_zlabel('z',fontdict=font); #RGB values
ax.set_title('Ultra Cotton',fontdict=font);
plt.tight_layout()
plt.savefig('UltaCotton.png')
ax.view_init(60, 35)
fig
[]
我的问题是 - 我的图表颜色空间值为HSV。 如下所示,我可以拆分这些值以创建散点图。
但是,我希望保留轮廓的杆状结构,但杆的颜色与定义的颜色空间HSV匹配,就像散点图中所看到的那样。
我希望我的轮廓图和散点图有一个混合体。
FYI-倒置了z值,以便顶部表面易于查看。
能做到吗?谢谢
flags = [i for i in dir(cv2) if i.startswith('COLOR_')]
len(flags)
258
flags[40]
'COLOR_BGR2RGB'
hsv_img = cv2.cvtColor(img, cv2.COLOR_RGB2HSV)
pixel_colors = img.reshape((np.shape(img)[0]*np.shape(img)[1], 3))
norm = colors.Normalize(vmin=-1.,vmax=1.)
norm.autoscale(pixel_colors)
pixel_colors = norm(pixel_colors).tolist()
h, s, v = cv2.split(hsv_img)
fig = plt.figure()
axis = fig.add_subplot(1, 1, 1, projection="3d")
axis.scatter(h.flatten(), s.flatten(), v.flatten(), facecolors=pixel_colors, marker=".")
axis.set_xlabel("Hue")
axis.set_ylabel("Saturation")
axis.set_zlabel("Value")
plt.show()
]4
plt.tight_layout()
plt.savefig('filename.png')
axis.view_init(45, 35)
#ax.set_title('Ultra Cotton');
plt.tight_layout()
plt.savefig('filenameView.png')
fig
[]