Halcon视觉之家 - 51Halcon专注于机器视觉技术

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

查看: 1224|回复: 2

[已解决] 如何求出任意矩形的四个顶角位置?

[复制链接]
  • TA的每日心情

    2021-3-11 08:21
  • 签到天数: 27 天

    连续签到: 4 天

    [LV.4]偶尔看看III

    4

    主题

    47

    帖子

    143

    积分

    Rank: 1

    积分
    143

    最佳新人

    发表于 2020-12-11 14:25:19 | 显示全部楼层 |阅读模式

    51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

    您需要 登录 才可以下载或查看,没有帐号?会员注册

    x
    本帖最后由 3088286561 于 2020-12-14 08:25 编辑
    在halcon如何求出任意矩形的四个顶角位置?我这里写了两种比较常见的写法!原理是通过三角函数计算
    1.第一种写法我是用三角函数进行计算求出
    2.第二种是利用halcon自带的仿射变换得出,通过矩阵关系,然后仿射点的关系而得出的
    原图:
    求矩形的四个角的位置.png
    处理后的结果:
    结果.png

    这里将为大家免费展示的是第二种写法,也就是通过仿射关系求出,比较简单
    *生成两个矩形(一个是平行于轴的矩形,不带角度的,另一个是带角度的矩形)
    gen_rectangle1 (ROI_0, 47, 46, 122, 320)
    gen_rectangle2 (ROI_1, 273, 178, rad(10.9807), 136.499, 34.4194)


    dev_set_draw ('margin')
    dev_set_color ('red')
    *这里是自己定义的函数
    gen_4_point_1_rectangle (ROI_0, R1, C1)
    gen_4_point_1_rectangle (ROI_1, R2, C2)

    dev_display (ROI_0)
    dev_display (ROI_1)
    dev_set_color ('yellow')
    gen_cross_contour_xld (Cross, R1, C1, 20, 0.785398)
    gen_cross_contour_xld (Cross1, R2, C2, 20, 0.785398)


    //////////////////////////////////////////////////////////////////////////////
    下面是gen_4_point_1_rectangle 函数里面的代码,

    *获取外接最小矩形的参数
    smallest_rectangle2 (rectangle, Row1, Column1, Phi, Len1, Len2)
    *生成一个辅助矩形
    dev_set_color ('blue')
    gen_rectangle2 (Rectangle1, Row1, Column1,rad(0), Len1, Len2)
    gen_cross_contour_xld (Cross, Row1, Column1, 20, 0.785398)
    *求出辅助矩形的四个顶角
    r1:=Row1-Len2
    c1:=Column1-Len1
    r2:=Row1-Len2
    c2:=Column1+Len1
    r3:=Row1+Len2
    c3:=Column1+Len1
    r4:=Row1+Len2
    c4:=Column1-Len1

    *根据点和角度,创建一个矩阵关系
    vector_angle_to_rigid (Row1, Column1, rad(0), Row1, Column1, Phi, HomMat2D)
    *对点进行仿射变换
    affine_trans_point_2d (HomMat2D, r1, c1, r1, c1)
    affine_trans_point_2d (HomMat2D, r2, c2, r2, c2)
    affine_trans_point_2d (HomMat2D, r3, c3, r3, c3)
    affine_trans_point_2d (HomMat2D, r4, c4, r4, c4)

    R1:=[r1,r2,r3,r4]
    C1:=[c1,c2,c3,c4]

    dev_set_color ('green')
    disp_cross (200000, R1, C1, 20, 45)
    return ()
    下面是hdev文件(第一种和第二张写法都在里面)
    矩形顶点求解.zip (1.92 KB, 下载次数: 2, 售价: 10 视觉币)

    评分

    参与人数 1热心值 +1 收起 理由
    吃货的的烦恼 + 1 谢谢大佬!

    查看全部评分

  • TA的每日心情

    2021-3-11 08:21
  • 签到天数: 27 天

    连续签到: 4 天

    [LV.4]偶尔看看III

    4

    主题

    47

    帖子

    143

    积分

    Rank: 1

    积分
    143

    最佳新人

     楼主| 发表于 2020-12-11 14:29:12 | 显示全部楼层
    互相学习一下!
  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 1267 天

    连续签到: 2 天

    [LV.10]以坛为家III

    417

    主题

    1723

    帖子

    6222

    积分

    Rank: 9

    积分
    6222

    突出贡献优秀版主荣誉管理论坛元老切换助手验证会员最佳新人

    发表于 2020-12-11 15:04:28 | 显示全部楼层
    效果还不错,楼主可以封装一个算子,输入图形就可以得出四个顶点,函数内部可以使用三角函数计算也是可以实现的!
    无效附件更新 权限提升操作 删帖申请 举报以及其他需要帮助请加入QQ群:214663141 广告位招商 有意者联系
    您需要登录后才可以回帖 登录 | 会员注册

    本版积分规则

    视觉培训招生

    建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站

    51Halcon会员技术交流会员技术交流 | 51Halcon官方客服咨询官方客服咨询 | Halcon切换助手使用反馈切换助手使用

    算子查询| 申请友链| 小黑屋| 手机版| Archiver|

    © 2015-2021 51Halcon机器视觉  X3.4  粤ICP备15095995号 粤公网安备44030602000670号

    快速回复 返回顶部 返回列表