python - Mayavi - 鼠标悬停交互 & 不同视角绘制同一场景

标签 python opencv gtk pygtk mayavi

我目前正在努力了解如何以适当的方式与 mayavi 渲染的场景进行交互。

我有一个激光雷达点云,它由函数 points3d() 绘制,现在我在点云之间的汽车周围另外设置了一个边界框,我想更改点内点的颜色当我将鼠标悬停在边界框上时。 你能告诉我如何只选择 bbox 内的点并更改它们的颜色吗?

我的第二个问题是,如何在 3d View 和鸟瞰图中同时显示相同的点云场景?

非常感谢:]

最佳答案

我已经找到了关于颜色问题的解决方案 - 我不知道这是否是最佳做法。但我仍然需要帮助来确定边界框内的点。我还想创建一个 gui,使用户能够修改边界框的大小和方向。 [但那是另一个话题]

import numpy as np
from mayavi.mlab import draw, points3d
from tvtk.api import tvtk

# Primitives
N = 3000 # Number of points
ones = np.ones(N) #np.hstack((np.tile(np.array([1]), int(N/2)).T,  np.tile(np.array([4000]),  int(N/2)).T))
scalars = ones #np.arange(N)  # Key point: set an integer for each point

# Define color table (including alpha), which must be uint8 and [0,255]
colors = np.vstack((np.tile(np.array([[255],[255],[0]]), int(N/2)).T,  np.tile(np.array([[0],[0],[255]]),  int(N/2)).T))
# Define coordinates and points
x, y, z = (np.random.random((N, 3))*255).astype(np.uint8).T # Assign x, y, z values to match color
pts = points3d(x, y, z, scale_factor=10) # Create points
#pts.glyph.color_mode = 'color_by_vector' # Color by scalar
# Set look-up table and redraw
#pts.module_manager.scalar_lut_manager.lut.table = colors
pts.glyph.scale_mode = 'scale_by_vector'
sc=tvtk.UnsignedCharArray()
sc.from_array(colors)
pts.mlab_source.dataset.point_data.scalars = sc
draw()

关于python - Mayavi - 鼠标悬停交互 & 不同视角绘制同一场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55343891/

相关文章:

python - 遍历元素在 Python 上的 Selenium 上获得重复结果

python - 如何使用 mincemeat 将 example.py 中定义的任务分发到两台客户端计算机?

python - 如何将整数列表转换为列表列表?

python - 使用 OpenCV(或使用其他工具)检测网格节点

ubuntu - GtkDialog 映射时没有 transient 父级。这是不鼓励的,Katalon Studio Linux (Beta GUI) 出现错误

python - PyGTK 中的持久窗口

python - 如何在 Windows 上构建 Python Sybase 模块?

c++ - 在 OpenCV 中流式传输视频

c++ - 找不到 OpenCV haarcascade_frontalface_alt.xml

Python 窗口调整大小