[RBG图像作为使用matplotlib的3D立方体的纹理

问题描述 投票:-1回答:1

我想使用matplotlib绘制3D立方体,并将任意RGB图像(jpg或png)作为纹理映射到立方体的每一侧。有一个很好的例子here using matlab

enter image description here

[我只是想知道如何使用Python / matplotlib来实现,可能从this example开始。

python matplotlib visualization texture-mapping
1个回答
0
投票

我自己弄清楚了,下面是代码:

import numpy as np
import matplotlib.image as image
import matplotlib.pyplot as plt

C = image.imread('d:/timg.png')

xp, yp, __ = C.shape

x = np.arange(0, xp, 1)
y = np.arange(0, yp, 1)
Y, X = np.meshgrid(y, x)

fig = plt.figure(figsize=(12,9))
ax = fig.gca(projection='3d')
ax.dist=6.2
ax.view_init(elev=38, azim=-45)

ax.plot_surface(X, Y, X-X+yp, facecolors=C,
                rstride=2, cstride=2,
                antialiased=True, shade=False)

ax.plot_surface(X, X-X, Y, facecolors=np.fliplr(C.transpose((1,0,2))),
                rstride=2, cstride=2,
                antialiased=True, shade=False)

ax.plot_surface(X-X+xp, X, Y, facecolors=np.fliplr(C.transpose((1,0,2))),
                rstride=2, cstride=2,
                antialiased=True, shade=False)

生成的图像是:

3D texture

将步幅更改为1将获得png图像的更多细节,但这似乎不是一种非常有效的方法,尤其是当图像尺寸很大时。

© www.soinside.com 2019 - 2024. All rights reserved.