我看到可以有 an event handler for mouse click in viz , 但不是 Widget 的等价物.
有没有什么方法可以使用 viz::MouseEvent()
返回的 Point
来检测对小部件的点击?
最佳答案
不,小部件不可点击。
您可以:
- 获取鼠标事件
- 检查点击是否类型 == MouseButtonPress
- 获取窗口中发生点击的点
- 使用 converTo3DRay 获取代表点击的所有 3D 深度的射线
- 迭代您的小部件以寻找交叉点。每个小部件之王的交集计算方式不同。
getWidgetPose 为您提供引用相机的姿势。 getWidgetPose(...).translation() 为您提供小部件所在的位置。如果您对此翻译不满意,可以应用 converTo3DRay。
如果您发现很多小部件,您可以按 z 坐标排序(越低,越靠近相机)。它适用于点,其他几何体更难。
关于c++ - cv::viz::Widget 是否可点击? (OpenCV C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40391399/