如何正确使用 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() 的相关文章

  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l

随机推荐

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

    我搜索了几篇文章 试图找到一种方法来检索表达式的每个术语和运算符 如下所示 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 特征值 迭