vins-mobile代码解析3:drawAR

本文介绍了AR功能的核心流程,包括检测平面、计算3D物体顶点并投影到相平面,使用OpenCV进行多边形填充。详细讲述了drawGround和drawBox的过程,涉及到相机朝向、平面检测、Delaunay三角剖分以及用户交互对AR物体的操作,如平移、缩放和旋转。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AR功能主要流程是:先检测平面,然后计算AR物体(box)的各个顶点3d位置,然后写程序把每个顶点投影到相平面,用cv的多边形填充功能来绘制到照片上面。

  • 先求一个相机朝向的vector:w_cam_z
  • findGround

    • 输入数当前滑窗中所有的3d点

    • 把所有点按照高度划分为30层

    • 取出点最多的那一层作为平面

  • drawGround

    • 只有在平面中的点数大于28的时候才画地面

    • 先把所有点投影到相平面

    • 用2d的Delaunay生成这些点的3角格子

    • 把每条边都画到照片上

  • drawBox

    • 把所有box手动投影到相平面,然后手动多边形填充

    • Grounds其实是所有box的集合不是平面的

  • 相应对box的平移操作

    • 检查locationX和locationX_p是否一样

      • locationX在pan的回调函数中会被修改

      • 不一样说明用户出发了平移box事件

    • 检查点选的事哪个box

      • 把所有box的中心投影到相平面

      • 看相平面的中心和点选位置哪个最近

      • 通过屏幕上移动的距离计算对应的投影射线的旋转夹角,最后计算3d空间中的移动距离

      • 移动选中的box

  • 处理抓取操作进行的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值