如何正确使用 cv::triangulatePoints()

2023-12-26

我正在尝试用 OpenCV 对一些点进行三角测量,我发现了这个cv::triangulatePoints()功能。问题是几乎没有相关的文档或示例。

我对此有些疑问。

  1. 它使用什么方法?我对三角测量做了一些研究,有几种方法(线性、线性 LS、特征值、迭代 LS、迭代特征值……),但我找不到 OpenCV 中使用的是哪一种。

  2. 我应该如何使用它?看来作为输入它需要一个投影矩阵并且3xN同质2D点。我将它们定义为std::vector<cv::Point3d> pnts,但作为输出它需要4xN数组,显然我无法创建std::vector<cv::Point4d>因为它不存在,那么我应该如何定义输出向量?

对于第二个问题我尝试过:cv::Mat pnts3D(4, N, CV_64F); and cv::Mat pnts3d;,但似乎都不起作用(它引发异常)。


1.- 方法使用的是最小二乘法。还有比这个更复杂的算法。尽管如此,它仍然是最常见的一种,因为其他方法在某些情况下可能会失败(即,如果点位于平面上或无限处,其他方法可能会失败)。

该方法可以在计算机视觉中的多视图几何 by 理查德·哈特利和安德鲁·齐瑟曼 (p312)

2.-用途:

cv::Mat pnts3D(1, N, CV_64FC4);
cv::Mat cam0pnts(1, N, CV_64FC2);
cv::Mat cam1pnts(1, N, CV_64FC2);

用图像中的点填充 2 通道点矩阵。

cam0 and cam1 are Mat3x4相机矩阵(内部和外部参数)。您可以通过乘法来构造它们A*RT, where A是内在参数矩阵,RT是旋转平移 3x4 位姿矩阵。

cv::triangulatePoints(cam0,cam1,cam0pnts,cam1pnts,pnts3D);

NOTE: pnts3D需要是 4 通道1xN cv::Mat定义时,如果没有定义,则抛出异常,但结果是cv::Mat(4, N, cv_64FC1)矩阵。真的很令人困惑,但这是我没有得到例外的唯一方法。


UPDATE:从版本 3.0 或更早版本开始,这不再是事实,并且pnts3D也可以是类型Mat(4, N, CV_64FC1)或者可以完全留空(像往常一样,它是在函数内部创建的)。

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

如何正确使用 cv::triangulatePoints() 的相关文章

  • 尝试了解使用服务打开对话框

    我已经阅读了有关使用 mvvm 模式打开对话框的讨论 我看过几个使用服务的示例 但我不明白所有部分如何组合在一起 我发布这个问题寻求指导 以了解我应该阅读哪些内容 以更好地理解我所缺少的内容 我将在下面发布我所拥有的内容 它确实有效 但从我
  • 转换 const void*

    我有一个函数返回一个const void 我想用它的信息作为char 我可以将它投射为 C 风格的罚款 char variable但是当我尝试使用reinterpret cast like reinterpret cast
  • 按扩展名过滤搜索文件返回太多结果

    我正在开发一个 C 控制台应用程序 它必须管理 Windows 操作系统上的文件 我需要获取具有特定扩展名的文件名 列表 我找到了很多解决方案 最建议的是以下一种 HANDLE hFind WIN32 FIND DATA data hFin
  • 传递 constexpr 对象

    我决定给予新的C 14的定义constexpr旋转并充分利用它 我决定编写一个小的编译时字符串解析器 然而 我正在努力保持我的对象constexpr将其传递给函数时 考虑以下代码 include
  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • java中如何重新初始化int数组

    class PassingRefByVal static void Change int pArray pArray 0 888 This change affects the original element pArray new int
  • 在 C# 中,如何根据在 gridview 行中单击的按钮引用特定产品记录

    我有一个显示产品网格视图的页面 该表内有一列 其中有一个名为 详细信息 的超链接 我想这样做 以便如果用户单击该特定产品的详细信息单元格 将打开一个新页面 提供有关该产品的更多信息 我不确定如何确定哪个Product记录链接的详细信息以及我
  • 如何在 C# Designer.cs 代码中使用常量字符串?

    如何在 designer cs 文件中引用常量字符串 一个直接的答案是在我的 cs 文件中创建一个私有字符串变量 然后编辑 Designer cs 文件以使用此变量 而不是对字符串进行硬编码 但设计者不喜欢这样抛出错误 我明白为什么这行不通
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 如何递归取消引用指针(C++03)?

    我正在尝试在 C 中递归地取消引用指针 如果传递一个对象 那就是not一个指针 这包括智能指针 我只想返回对象本身 如果可能的话通过引用返回 我有这个代码 template
  • 从 C# 使用 Odbc 调用 Oracle 包函数

    我在 Oracle 包中定义了一个函数 CREATE OR REPLACE PACKAGE BODY TESTUSER TESTPKG as FUNCTION testfunc n IN NUMBER RETURN NUMBER as be
  • 在 C# 中为父窗体中的子窗体控件添加事件处理程序

    我有两种形式 一种是带有按钮和文本框的父表单 单击该按钮时 将打开一个对话框 该子窗体又包含一个文本框和一个按钮 现在我想要的是 每当子表单文本框中的文本更改时 父表单文本框中的文本会自动更改 为了获得这个 我所做的是 Form3 f3 n
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • 将函数参数类型提取为参数包

    这是一个后续问题 解包 元组以调用匹配的函数指针 https stackoverflow com questions 7858817 unpacking a tuple to call a matching function pointer
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • 比较:接口方法、虚方法、抽象方法

    它们各自的优点和缺点是什么 接口方法 虚拟方法 抽象方法 什么时候应该选择什么 做出这一决定时应牢记哪些要点 虚拟和抽象几乎是一样的 虚方法在基类中有一个实现 可以选择重写 而抽象方法则没有 并且must在子类中被覆盖 否则它们是相同的 在
  • 使动态创建的链接标签在 Winforms 中可点击

    我正在制作一个程序 允许用户单击由动态链接标签创建的公司名称 在我想知道如何做到这一点之前 我从未在 C 中使用过链接标签 可为特定用户生成的业务数量各不相同 因此每个用户的链接标签数量并不相同 然后我想捕获业务 ID 以进行 Json 调
  • 将 Lambda 表达式树与 IEnumerable 结合使用

    我一直在尝试了解有关使用 Lamba 表达式树的更多信息 因此我创建了一个简单的示例 这是代码 如果作为 C 程序粘贴到 LINQPad 中 它可以工作 void Main IEnumerable
  • 了解 Lambda 表达式和委托 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经尝试解决这个问题很长一段时间了 阅读在线博客和文章 但到目前为止还没有成功 什么是代表 什么是 Lambda 表达式 两者的优点
  • 是否允许全局静态标识符以单个 _ 开头?

    换句话说 可能static 文件范围 全局变量恰好以一个下划线开头 而不会产生与 C 实现发生名称冲突的可能性 https www gnu org software libc manual html node Reserved Names

随机推荐

  • 使用正则表达式对表达式的每个术语和运算符进行匹配和分组

    我搜索了几篇文章 试图找到一种方法来检索表达式的每个术语和运算符 如下所示 now 1 day 2 days 对于这个表达式 我想要有 5 组 现在 1 天 2 天 我想出的正则表达式如下 never now d s millisecond
  • 尝试启动调试器时自定义扩展方法导致构建错误

    我在我的几个项目中使用我自己的扩展方法 当我编译 构建 重建 时一切都很好 但是 当我启动调试器并重新编译代码时 我会得到一个与扩展方法相关的错误列表 表明它们不是它们所附加的类的成员 对于为什么会发生这种情况有什么想法吗 这似乎是间歇性的
  • 通过嵌套表单和载波上传似乎不起作用

    我有一个Profile模型和Transcript model My Profile模型看起来像这样 class Profile lt ActiveRecord Base has many transcripts dependent dest
  • AWS 上多个 API 之间的共享 Python 库

    我有几个使用 AWS lambda 运行的不同 python API 即 python 脚本 标准方法是生成一个 zip 文件 其中包含开发所需的所有外部库lambda函数 然后将其上传到AWS 现在 我有一些不同 API 之间共有的函数
  • Thread.Join 似乎错误地返回 false

    我在用Thread Join int millisecondsTimeout http msdn microsoft com en us library 6b1kkss0 28v vs 90 29 aspx终止一些AppDomains 我经
  • 编译错误:显式实现接口时“修饰符‘public’对此项无效”

    我在创建时遇到此错误public类上的方法 用于显式实现interface 我有一个解决方法 通过删除显式实现PrintName方法 但我很惊讶为什么我会收到这个错误 谁能解释这个错误 图书馆代码 using System using Sy
  • 使用 malloc 设置字符串数组然后清除它

    我想使用 malloc 创建一个字符串数组 然后清除所有分配的内存 我相信我使用 malloc 是正确的 但当我尝试清除它时 我无法理解我做错了什么 include
  • Django admin:内联直接到二级关系

    我有一个三级Invoice我想在 Django 的管理区域中显示的模型 以 某种形式 special way 请允许我提供一些背景信息 Each Invoice是由几个符合SubInvoice s 以及每个SubInvoice是由几个符合I
  • 在java中读取和存储.bmp文件

    我正在尝试读取一个名为的 bmp 文件circle1 bmp 它位于我已导入以下文件的包中 到目前为止 我有以下代码 但是当我运行以下代码时 我得到 javax imageio llOException 无法读取输入文件 public vo
  • 如何使用spark处理大的小数?

    我的数据库有numeric值 最多为 256 位无符号整数 然而 火花的decimalType限制为 Decimal 38 18 当我尝试对列进行计算时 会引发异常 java lang IllegalArgumentException 要求
  • 在 Angular 5 环境中使用 process.env

    我尝试使用标准构建 Angular 5 应用程序ng build prod命令 我想在中设置基本的API Urlenvironment prod ts取决于我的价值process env变量 这是我的文件 export const envi
  • React + Material-UI - 警告:Prop className 不匹配

    由于分配的类名不同 我很难理解 Material UI 组件中客户端和服务器端样式渲染之间的差异 首次加载页面时 类名被正确分配 但刷新页面后 类名不再匹配 因此组件失去其样式 这是我在控制台上收到的错误消息 警告 道具className不
  • POST 请求适用于 Postman,但不适用于 Guzzle

    在我的 Laravel 应用程序中 我定期需要使用 Guzzle 将数据 POST 到 API API 使用不记名令牌进行身份验证 并请求和接受原始 json 为了进行测试 我使用 Postman 访问了 API 一切都运行良好 邮递员标题
  • 使用 mod_rewrite 代理 url

    例如我有一个域名 http example com 和另一个域 http reallylargerdomain name com 我想要有人访问http example com projects http example com proje
  • 我可以强制 NSURLConnection 从缓存加载吗?

    我曾考虑过编写自定义 url 缓存 但似乎 NSURLCache 应该支持磁盘缓存 我想让我的 iPhone 应用程序使用缓存的响应 而无需访问服务器 直到资源变得陈旧 由我从服务器发回的标头确定 我是否必须使用 NSURLConnecti
  • npm install 发出警告,npm 审计修复不起作用

    我正在开发一个带有 net core Web api 的 Angular 应用程序 当我克隆这个存储库时 我尝试在 Angular 应用程序上运行 npm install 但出现了一个奇怪的错误 npm install npm WARN o
  • 在python中获取活动的gtk窗口

    我如何获得活动的句柄gtk Window在Python中 不是我创建的窗口 而是当前聚焦的窗口 答案实际上与操作系统无关 您可以在 GTK 中完成 您可以使用以下命令从应用程序中获取所有顶级窗口的列表gtk window list topl
  • Rails 3,回形针 - 自定义插值

    我在制作自定义插值时遇到了一些麻烦 浏览了我在网上可以找到的每个示例 但无论我做什么 都没有成功 目前我有这个 Model has attached file photo path gt rails root public images i
  • 在 Netbeans 中包含本机库

    我正在尝试从 java 签名的小程序读取便携式设备 我发现了一个 jmtp 库http code google com p jmtp w list http code google com p jmtp w list访问便携式设备 但是当我
  • 如何正确使用 cv::triangulatePoints()

    我正在尝试用 OpenCV 对一些点进行三角测量 我发现了这个cv triangulatePoints 功能 问题是几乎没有相关的文档或示例 我对此有些疑问 它使用什么方法 我对三角测量做了一些研究 有几种方法 线性 线性 LS 特征值 迭