vins-mobile代码解析3:drawAR

2023-05-16

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

  • 处理抓取操作进行的缩放

  • 双手指的旋转

  • 点击的添加新的box,条件是平面点要大于28

    • 投影平面中心点到相平面

    • 看是否附近有box,没有的话才进行下一步

    • 把box放到当前平面上

      • findPlane

        • 输入平面的点

        • 输出拟合的平面方程的4个系数

    • 盒子属性

      • ori :盒子的一个角点

      • gp.cox,gp.coy,gp.coz :盒子三个方向的边的另外一个端点的坐标

      • lix,liy,liz:盒子三个轴的方向,代表盒子的朝向

  •  

    长按后标识被按住盒子

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vins-mobile代码解析3:drawAR 的相关文章

  • 适用于移动应用程序的最佳远程技术是什么?

    我有一个 java 后端 需要向在以下环境中运行的客户端公开服务 J2ME 视窗手机 iPhone 我正在寻找适合每个平台的最佳工具 我不会寻找一种在任何地方都适用的技术 我需要一些适合低速互联网访问的 轻型 东西 现在我正在使用 SOAP
  • Android CookieManager setCookie 创建多个cookie

    在我的 Android 应用程序中 我有一个网络视图 它从多个域加载 URL 我需要删除特定域中的所有 cookie 我想保留来自其他域的 cookie 但我需要删除一个域中的所有 cookie 我对处理我的请求的所有其他解决方案持开放态度
  • JQuery Mobile 加载更多选项

    知道如何在 JQueryMobile 中实现加载更多选项 在我的应用程序中 我需要提取大量数据 并希望加载前 20 条数据 并让用户通过单击 Listview 最后一行上的 加载更多 数据选项来加载更多数据 这应该有效 loadmore l
  • 不良状态:平台不允许不安全的 HTTP:[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我遇到以下问题 E flutter 7144 错误 flutter lib ui ui dart state cc 17
  • 使用 HTML 5 的进度条(下载)

    我正在开发一个需要从数据库下载内容的项目 通常使用手机 高端智能手机 访问该网站 我想知道是否可以在使用 HTML5 下载内容的过程中添加进度条 以便在执行此操作时会在整个屏幕上出现一个灯箱 并且只显示进度条 可以使用 XMLHttpReq
  • 使输入类型=“密码”在移动设备上使用数字键盘

    在我为移动设备设计的网站上 我有一个用于 PIN 码的输入字段 我希望在输入文本时隐藏文本 并且希望当移动设备上的用户想要输入 PIN 码时弹出数字键盘 当类型 数字 时 数字键盘会弹出 但当类型 密码 时 数字键盘不会弹出 并且我无法 或
  • 在移动网络浏览器上下拉刷新[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在为网络应用程序提供移动支持 我的应用程序有一个要求 下拉屏幕刷新页面以获取最新更新 我在 iPh
  • Facebook 画布应用程序与 Facebook 移动网络应用程序

    我对 facebook 画布应用程序和 facebook 移动网络应用程序之间的区别有点困惑 这是我困惑的背景 我有一个画布应用程序 让我们将其命名空间称为 myfbapp 我基本上可以从https apps facebook com my
  • 如何禁用 Nexus Galaxy 画布上的点击突出显示?

    我正在编写一个使用 HTML5 画布的 Web 应用程序并在 Nexus Galaxy 上进行测试 当用户点击画布时 它会突出显示青色一秒钟 即使我在 touchstart 事件上调用了 PreventDefault 我也尝试过一些CSS规
  • 如何在移动设备上使用Unity3d实现多点触控?

    I use OnMouseDown 可以处理按压 但不可能实现多点触控 该程序包括当您点击时增加然后减少的对象 如果轻轻一按 一切都会正常 但是 当您尝试同时单击多个对象时 它不起作用 我正在尝试解决该问题 但它不起作用 对象无法缩放并且多
  • jquery-mobile 是“移动优先”吗?

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我读过 Luke WROBLEWSKI 所著的 移动优先 一书以及许多其他有关该主题的读物 我是一名网
  • 使用 jQuery 重定向[重复]

    这个问题在这里已经有答案了 所以我将 jquerymobile 用于我正在创建的应用程序 我有一个链接 如果所有验证都通过 我想通过 但如果失败 我想重定向 在 jquery 中是这样的 由于它是 jquerymobile 因此链接将是同一
  • 某些方法上的 WCF REST 基本身份验证

    我在 WCF 4 0 中实现了很多 RESTful GET 和 POST 方法 所有这些都通过 SSL 进行 一些方法的示例 OperationContract WebInvoke UriTemplate Login Method POST
  • Adobe Air Mobile 为什么启动视频 stageVideo 时舞台会闪烁?

    我正在尝试使用 stageVideo 在 Android 平板电脑上播放视频 但每当我单击播放并将视频添加到舞台时 孔应用程序都会闪烁 然后视频会添加到舞台 然后视频开始全部像素化 然后它消失并开始正常播放 只需跳跃几次 我想知道什么情况会
  • 致命信号11(和引擎项目)

    我正在创建由 andengine 框架提供支持的 android 游戏 box2d 扩展我收到 致命信号 11 这似乎是突然发生的 我想你可以随机称呼它 没有任何线索 至少 我不知道有任何线索可以帮助我解决这个问题 我的猜测是 1 我正在使
  • JQuery-UI 水平拖动和垂直滚动

    我有一个页面 其中充满了仅在水平方向 在 X 轴上 的可拖动 div 当我使用触摸设备时 由于滚动和拖动之间的冲突 我无法向下滚动页面 这是一个jsfiddle 示例 http jsfiddle net 742cX 10 在触摸设备中进行测
  • 根据上一个 Flutter 的选择更改下拉按钮的选择

    我有2个DropdownButtonFormField我在那里可以选择汽车 我需要根据用户从 DropdownButtonFormField 中的第一个选择中选择的汽车型号来更改按钮的第二个选择 即 如果用户在第一个选择中选择梅赛德斯 则在
  • 如何在 HTML5/CSS3 中将视口锁定为纵向方向

    是否可以在移动设备上将视图端口的方向锁定为纵向 我用谷歌搜索了它 但无法找到确切的操作方法 这个技巧应该有效 media screen and orientation landscape html Rotate the content co
  • 如何在 React Native 和 Expo 中离线隐藏广告横幅或无法加载广告时?

    我在我的 React Native 应用程序中使用 expo 和 admob 实现了广告 但我想在没有加载广告时摆脱空白 阻塞空间 还没有找到任何例子 除了横幅之外 我在该页面上有一个标题和滚动视图 这就是 Admob 横幅的实现方式 Di
  • 媒体查询:如何定位桌面、平板电脑和移动设备?

    我一直在对媒体查询进行一些研究 但我仍然不太明白如何定位特定大小的设备 我希望能够针对台式机 平板电脑和移动设备 我知道会存在一些差异 但如果有一个可用于针对这些设备的通用系统 那就太好了 我发现的一些例子 Mobile only scre

随机推荐

  • Windows 环境下的 Socket 编程 4 - 基于 UDP 的服务器/客户端

    在 TCP 中 xff0c 套接字之间应该是一对一的关系 若向 10 个客户端提供服务 xff0c 则除了守门的服务器套接字外 xff0c 还需要 10 个服务器端套接字 但在 UDP 中 xff0c 不管是服务器端还是客户端都只需要 1
  • ADS1120 备忘

    ADS1120 是一个小型 低功耗 16 bit 模数转换器 xff08 ADC xff09 xff1a 内置 PGA xff08 1 128 xff09 内置参考基准 xff08 2 048V xff09 内置温度传感器内置 2 个已配对
  • Windows 环境下的 Socket 编程 5 - 套接字的可选项

    套接字具有多种特性 xff0c 这些特性可以更改 更改和读取可选项函数 span class token keyword int span span class token function getsockopt span span cla
  • 使能中断与禁止中断策略比较

    本文描述的内容仅适用于 Cortex M3 M4 架构 Keil MDK 编译环境 在阅读 RT Thread 源码和 FreeRTOS 源码时 xff0c 发现二者使能中断和禁止中断的方式不同 xff0c 再加上 CMSIS 也提供了使能
  • FreeModbus RTU 移植指南

    FreeModbus 简介 FreeModbus 是一个免费的软件协议栈 xff0c 实现了 Modbus 从机功能 xff1a 纯 C 语言支持 Modbus RTU ASCII支持 Modbus TCP 本文介绍 Modbus RTU
  • 随想007:模块化代码

    你一定不止一次的听说过模块化代码 理想的模块化代码高内聚低耦合 逻辑清晰 经过严格测试 xff0c 易于复用 嵌入式 C 编程界到处流传着它的大名 在学校 在公司 在各种技术书籍中 xff0c 你总能找到它的身影 它被描述的像是无所不能 x
  • VS Code 用作嵌入式开发编辑器

    使用 Keil MDK 进行嵌入式开发时 xff0c Keil 的编辑器相对于主流编辑器而言有些不方便 xff0c 比如缺少暗色主题 缺少智能悬停感知 xff08 鼠标停在一个宏上 xff0c 能自动展开最终的宏结果 xff09 代码补全不
  • CSDN Marddown 编辑器语法备忘

    原文链接 xff1a https blog csdn net blogdevteam article details 103478461 本文对其二次加工 xff0c 增加渲染样式 补充例程 添加未收录的常用语法 CSDN Markdown
  • 随想008:烂摊子

    我看到过很多离谱的现象 比如 xff1a 程序 代码重复 命名随意 逻辑混乱 甚至对齐都不一致 xff0c 当我询问代码为什么这样写时 xff0c 他们告诉我 xff1a 我接手时就是这样 xff01 原理图参数错误 器件老旧 xff0c
  • MySQL —— Database initialization failed 错误处理

    安装 MySQL 过程中遇到的错误 xff0c 记录一下 xff0c 避免下次又遇到同样的错误 安装 MySQL 8 0 33 到最后一步时 xff0c 出现了小红点无法往下执行了 找了网上的方法解决了问题 xff0c 为了避免下次遇到同样
  • 随想009:读书

    我很懊恼的意识到 xff0c 直到过了 30 岁 xff0c 我才明白如何读书 我们在网上浏览新闻 阅读小说 xff0c 这些让人愉悦的阅读不叫读书 xff0c 顶多叫消遣 xff1b 我们在学校背诵历史 地理 xff0c 记住数学公式和化
  • 找文心一言问了几个嵌入式软件开发的问题

    百度终于通知我可以试用文心一言了 xff0c 试验了一番 xff0c 总体满意 xff0c 记录几个文心一言回答的问题 我是一个嵌入式软件开发者 xff0c 你能帮我做什么工作以提高我的开发效率 作为一个嵌入式软件开发者 xff0c 以下是
  • JavaScript常用数组属性和方法

    本文给出了js xff08 JavaScript xff09 数组 xff08 Array xff09 操作所涉及到的所有常用内置函数说明及用法 xff0c 希望对大家有所帮助 数组的属性和方法 属性length属性 xff1a 方法1 把
  • FreeRTOS三种数据结构区别(StreamBuffer,MessageBuffer,Queue)

    转载自博客 xff1a https blog zh123 top p 61 308 Queue队列是最基本的数据结构 xff0c 在FreeRTOS v10 0后提供了另外两种高级数据结构为Streambuffer和MessageBuffe
  • MySQL知识点(详细)

    结构化查询语言SQL 结构化查询语言SQL xff08 Structured Query Language xff09 xff1a 是在关系数据库上执行数据操作 xff0c 检索及维护所使用的标准语言 xff0c 可以用来查询数据 定义数据
  • linux驱动系列学习之Framebuffer子系统(三)

    一 Framebuffer子系统简介 Framebuffer xff08 帧缓冲 xff09 时Linux系统位显示设备提供的一个接口 属于偏底层的显示接口 它将显示缓冲区抽象 xff0c 屏蔽图像硬件的底层差异 xff0c 允许上层应用程
  • Linux系统通过远程终端修改分辨率

    最近的工作是测试服务器的板载GPU xff0c 由于一切处于开发阶段 xff08 没有USB驱动 xff0c 无法通过键鼠操作 xff09 xff0c 切换桌面分辨率成了一项难题 用谷歌 用百度 xff0c 总算找到了一个在远程终端修改分辨
  • ubuntu安装WPS字体缺失的解决办法

    作者最近新安装的ubuntu系统 xff0c 所以缺少了很多的办公软件 xff0c 之前安装了WPS xff0c 但是Linux系统的wps缺少了windows的字库 xff0c 因此使用起来不太方便 xff0c 所以作者就整理了这样的一份
  • Qt实现串口通信(C++实现串口通信小助手)---串口收发及串口数据解码、串口通信模拟器。

    Qt实现串口通信示例 前言 xff1a 以下串口通信示例 xff0c 参考了现有网上前辈们的资源 xff0c 最后结合部分个人的思想 xff0c 所以下述博客会将实现的原理及代码的案例进行公开 这里我们先上效果图 xff1a 一 串口通信简
  • vins-mobile代码解析3:drawAR

    AR功能主要流程是 xff1a 先检测平面 xff0c 然后计算AR物体 xff08 box xff09 的各个顶点3d位置 xff0c 然后写程序把每个顶点投影到相平面 xff0c 用cv的多边形填充功能来绘制到照片上面 先求一个相机朝向