halcon中通过字体确定图片的位姿的例子

本文介绍了一个图像字符识别的完整流程,包括读取图像、确定字体方向、旋转图片、分离字符等步骤,并通过示例代码展示了如何使用编程语言实现这一过程。
dev_update_window ('off')
dev_update_var ('off')
dev_update_pc ('off')
dev_close_window ()
dev_open_window (0, 0, 640, 480, 'black', WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_set_colored (12)
dev_set_draw ('margin')
for J := 1 to 5 by 1

    read_image (Image, 'dot_print_rotated/dot_print_rotated_'+J$'02d')

   *确定字体方向

    text_line_orientation (Image, Image, 50, rad(-30), rad(30), OrientationAngle)

  *旋转图片

    rotate_image (Image, ImageRotate, -OrientationAngle/rad(180)*180, 'constant')

   *分离字符

    segment_characters (ImageRotate, ImageRotate, ImageForeground, RegionForeground, 'local_auto_shape', 'false', 'true', 'medium', 25, 25, 0, 10, UsedThreshold)
    select_characters (RegionForeground, RegionCharacters, 'true', 'ultra_light', 60, 60, 'false', 'false', 'none', 'true', 'wide', 'true', 0, 'completion')
    dev_clear_window ()
    dev_display (ImageRotate)
    dev_display (RegionCharacters)
    if (J < 5)
        disp_continue_message (WindowHandle, 'black', 'true')
    endif
    stop ()
endfor
在工业自动化领域,Halcon和FANUC机器人之间的姿和矩阵转换是一个常见的需求。以下是一个实际例子,展示了如何在Halcon和FANUC机器人之间进行姿和矩阵的转换。 ### 1. Halcon中的姿表示 Halcon使用齐次变换矩阵来表示姿。一个4x4的齐次变换矩阵包含了旋转和平移信息。例如: ```halcon hom_mat3d_identity(HomMat3DIdentity) hom_mat3d_rotate(HomMat3DIdentity, AngleX, 'x', 0, 0, 0, HomMat3DRotateX) hom_mat3d_rotate(HomMat3DRotateX, AngleY, 'y', 0, 0, 0, HomMat3DRotateY) hom_mat3d_translate(HomMat3DRotateY, Tx, Ty, Tz, HomMat3D) ``` ### 2. 转换为FANUC机器人姿 FANUC机器人使用特定的姿表示方式,通常包括置(X, Y, Z)和姿态(Rx, Ry, Rz)。我们需要从Halcon的齐次变换矩阵中提取这些信息。 ```halcon * 提取平移部分 hom_mat3d_get_origin(HomMat3D, X, Y, Z) * 提取旋转部分 hom_mat3d_get_rotation(HomMat3D, HomMat3DRot) vector_angle_to_rpy(HomMat3DRot, Rx, Ry, Rz) ``` ### 3. FANUC机器人姿表示 假设我们提取到的置和姿态如下: ```halcon X = 1000.0 Y = 2000.0 Z = 3000.0 Rx = 0.0 Ry = 1.5708 Rz = 0.0 ``` ### 4. 转换为FANUC机器人所需的格式 FANUC机器人通常需要将这些参数转换为特定的格式,例如RAPID语言中的置和姿态。 ```rapid P1:=[1000.0, 2000.0, 3000.0, 0.0, 1.5708, 0.0]; ``` ### 5. 实际应用 在实际应用中,你可以编写一个Halcon程序来自动完成这些转换,并将结果传递给FANUC机器人。例如: ```halcon * Halcon程序 hom_mat3d_identity(HomMat3DIdentity) hom_mat3d_rotate(HomMat3DIdentity, 0.0, 'x', 0, 0, 0, HomMat3DRotateX) hom_mat3d_rotate(HomMat3DRotateX, 1.5708, 'y', 0, 0, 0, HomMat3DRotateY) hom_mat3d_translate(HomMat3DRotateY, 1000.0, 2000.0, 3000.0, HomMat3D) * 提取平移部分 hom_mat3d_get_origin(HomMat3D, X, Y, Z) * 提取旋转部分 hom_mat3d_get_rotation(HomMat3D, HomMat3DRot) vector_angle_to_rpy(HomMat3DRot, Rx, Ry, Rz) * 输出结果 write_string("P1:=[", X, ", ", Y, ", ", Z, ", ", Rx, ", ", Ry, ", ", Rz, "];") ``` 通过上述步骤,你可以实现Halcon和FANUC机器人之间的姿和矩阵转换。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值