栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Mayavi中直接设置RGB / RGBA颜色

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Mayavi中直接设置RGB / RGBA颜色

据我所知,没有文档可以做到这一点,但是我找到了一种方法,只需很少的黑客攻击。这是一个最小的示例,可能需要对不同种类的源进行一些修补:

from tvtk.api import tvtk; from mayavi import mlab; import numpy as npx,y,z=np.random.random((3,nr_points)) #some datacolors=np.random.randint(256,size=(100,3)) #some RGB or RGBA colorspts=mlab.points3d(x,y,z)sc=tvtk.UnsignedCharArray()sc.from_array(colors)pts.mlab_source.dataset.point_data.scalars=scpts.mlab_source.dataset.modified()

看起来有时您还必须确保映射器指向正确的事物。对于上面的示例,这不是必需的,但是对于其他来源,可能是必需的

pts.actor.mapper.input=pts.mlab_source.dataset

在某个时候,应该更好地修复mayavi
API,以便有一个API可以针对所有管道功能执行此操作,但是事实证明这是相当复杂且大范围的更改,我目前没有时间进行完。

编辑:用户

eqzx
发布了另一个问题的答案(在MayaVi中为3D点指定绝对颜色),这可能更简单,尤其是对于某些难以使用的源类型
tvtk.UnsignedCharArray

他的想法是创建一个跨越256x256x256
RGB值整个范围的LUT。请注意,此LUT因此具有16,777,216项。如果您不打算在多个vtk对象中使用它,则可能会浪费大量内存。

#create direct grid as 256**3 x 4 array def create_8bit_rgb_lut():    xl = numpy.mgrid[0:256, 0:256, 0:256]    lut = numpy.vstack((xl[0].reshape(1, 256**3),  xl[1].reshape(1, 256**3),  xl[2].reshape(1, 256**3),  255 * numpy.ones((1, 256**3)))).T    return lut.astype('int32')# indexing function to above griddef rgb_2_scalar_idx(r, g, b):    return 256**2 *r + 256 * g + b#N x 3 colorscolors = numpy.array([_.color for _ in points])#N scalarsscalars = numpy.zeros((colors.shape[0],))for (kp_idx, kp_c) in enumerate(colors):    scalars[kp_idx] = rgb_2_scalar_idx(kp_c[0], kp_c[1], kp_c[2])rgb_lut = create_8bit_rgb_lut()points_mlab = mayavi.mlab.points3d(x, y, z  keypoint_scalars,  mode = 'point')#magic to modify lookup table points_mlab.module_manager.scalar_lut_manager.lut._vtk_obj.SetTableRange(0, rgb_lut.shape[0])points_mlab.module_manager.scalar_lut_manager.lut.number_of_colors = rgb_lut.shape[0]points_mlab.module_manager.scalar_lut_manager.lut.table = rgb_lut


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/646064.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号