赞
踩
这个算子提供了我们最需要的两个核心功能:
渲染部分,使用的是3D Scene相关的算子,如display_scene_3d、具体可以参考帮助文档中的说明,HALCON已经封装的很好,也很容易理解
鼠标交互看起来比较复杂,主要由该算子内部analyze_graph_event算子实现,其解析鼠标事件,根据不同的鼠标事件类型做不同的处理,基本处理思路为:将鼠标的位置变化转换为点云的位姿变化
鼠标移动,输入为鼠标的起始点和结束点(图像坐标系),最后输出一个旋转四元数:
鼠标两个点(图像坐标系)的坐标反投影到Camera坐标系(使用了get_line_of_sight算子),计算在Camera坐标系中的两个点的XY方向的平移量,然后修改点云位姿中XY方向的值即可
简单用两个点测试一下:
dev_get_window (WindowHandle) get_window_extents (WindowHandle, Row, Column, Width, Height) gen_cam_par_area_scan_division (0.008, 0, 5.2e-006, 5.2e-006, Width*0.5, Height*0.5, Width, Height, CameraParam) ** 将图像坐标系中的点反向投影到相机坐标系中 get_line_of_sight (100, 120, CameraParam, PX, PY, PZ, QX1, QY1, QZ1) get_line_of_sight (100, 220, CameraParam, PX, PY, PZ, QX2, QY2, QZ2) ** 将相机坐标系上的点投影到图像坐标系上 project_3d_point (QX1, QY1, QZ1, CameraParam, Row1, Column1) ***** Row1 = 100 ***** Column1 = 120 ** 手动验证,与project_3d_point结果一致 ** u=x/dx + u(0) ** v=y/dy + v(0) U_Col := QX1 / 5.2e-006 + Width*0.5 V_Row := QY1 / 5.2e-006 + Height*0.5 ** U_Col = 120
鼠标在窗口中上Y方向的平移代表点云Z方向的平移量,同样只需更改点云位姿中Z方向的值即可
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。