c++ - cv::viz::Widget 是否可点击? (OpenCV C++)

标签 c++ opencv

我看到可以有 an event handler for mouse click in viz , 但不是 Widget 的等价物.

有没有什么方法可以使用 viz::MouseEvent() 返回的 Point 来检测对小部件的点击?

最佳答案

不,小部件不可点击。

您可以:

  1. 获取鼠标事件
  2. 检查点击是否类型 == MouseButtonPress
  3. 获取窗口中发生点击的点
  4. 使用 converTo3DRay 获取代表点击的所有 3D 深度的射线
  5. 迭代您的小部件以寻找交叉点。每个小部件之王的交集计算方式不同。

getWidgetPose 为您提供引用相机的姿势。 getWidgetPose(...).translation() 为您提供小部件所在的位置。如果您对此翻译不满意,可以应用 converTo3DRay。

如果您发现很多小部件,您可以按 z 坐标排序(越低,越靠近相机)。它适用于点,其他几何体更难。

关于c++ - cv::viz::Widget 是否可点击? (OpenCV C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40391399/

相关文章:

c++ - 对象的动态数组与指针的动态数组

c++ - 如何为泛型类型的 vector 声明迭代器?

c++ - 在 Mouse Proc C++ Win32 中重复消息

c++ - 关于使用 operator reinterpret_cast 将引用类型转换为另一个的奇怪问题

c++ - 为什么 opencv 发现轮廓的边界点是无序的和未完成的?

c++ - 为什么在使用模板递归检查数字是否为 3 的幂时需要特殊情况?

opencv - OpenCV 中的 FeatureDetector 与 FeatureFinder

python - OpenCV 分割轮廓

python - OpenCv - cv2.VideoWriter对象没有属性释放

opencv - 试图理解仿射变换