Halcon - 相对于校准地平面的垂直测量平面

Halcon - Vertical measure plane relative to the calibrated groundplane

我有一个相机,它正对着地平面看对角线。该平面已校准。这个平面上有一个物体,可以在任何距离(在相机的视野内),但总是会朝向相机旋转..(而不是与侧面成一定角度..)

我想测量这个物体的高度。我可以检测到下边缘的位置,它是否接触到地平面。是否可以在定义的位置将 "erect a measuring plane" 垂直于地平面进行排序,以便进行垂直测量?如果是,如何实现?

编辑:

到目前为止我想到了这个:

 newpose := Pose
 newpose[3] := newpose[3]-90
 gen_plane_object_model_3d (newpose, [-0.5,-0.5,0.5,0.5], [-0.5,0.5,0.5,-0.5], ObjectModel3D)
 disp_object_model_3d (3600, ObjectModel3D, CamParam, [], [], [])

这将创建一个在我的地平面的 X 轴上旋转 90° 的平面。到目前为止一切顺利..但无法弄清楚坐标现在在哪里.. 0/0 在哪里,以及如何沿着地平面移动它,如上图所示。

这样解决的:

*shift pose to desired zero on ground plane…
set_origin_pose (Pose, -0.0134, 0.221343, 0.000, Pose)

grab_image (Image, AcqHandle)

*make a copy of the original pose and rotate it 90 degrees along the x axis.. New pose is with 0/0 in same location as ground pose, but perpendicular to it.
  newpose := Pose
  newpose[3] := newpose[3]-90
*move the vertical plane along the Y axis of the ground plane (Z axis of the vertical plane). In this case 15 cm…
  set_origin_pose (newpose, -0, -0, -0.15, newpose)

*klick on the image to measure coordinates in mm relative to the zero point of the vertical plane.
    while (1)
    disp_message (3600, 'Measure one point: left mouse button', 'window', 12, 12, 'red', 'false')
    disp_message (3600, 'Exit measure mode: right mouse button', 'window', 36, 12, 'red', 'false')
    get_mbutton (3600, Row, Column, Button)
   if (Button == 4)
        break
    endif
    dev_display (Image)
    dev_set_color ('green')
    disp_cross (3600, Row, Column, 6, 0)
    image_points_to_world_plane (CamParam, newpose, Row, Column, 1, X1, Y1)
    disp_message (3600, 'X = ' + X1, 'window', 320, 400, 'red', 'false')
    disp_message (3600, 'Y = ' + Y1, 'window', 340, 400, 'red', 'false')
endwhile