问题标签 [extrinsic-parameters]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
opencv - 需要帮助使用 open cv c++ 对对象进行姿态估计
我有来自校准相机的内在和失真矩阵。我正在使用 open cv 3.2 c++。我得到对象姿态估计的错误输出。帮我解决这个错误。值和错误图像附在下面。
我已经有了图像和对象点,所以继续使用solvepnp来获取旋转和平移向量。所以,
图片如下所示。估计位姿的误差输出
编辑:对象点和图像点以相同的方式正确排序。我确定订单,我已经完成了主要订单。
我有两个疑问, 1.虽然它们的顺序正确,但有时姿势结果错误如下所示,可能是什么原因?
2.如果我画了,估计的姿势只在 Image_points[0],结果是正确的,但不是在任何其他点。有人可以解释为什么 Image_points[30] 的姿势错误吗?在任何时候,物体的姿势都应该是一样的,对吧?
java - ReentrantLock 线程随机终止
我一直在做一个关于 Java 多线程的学校作业。我卡在其中的一个任务是,我们需要在不同的组中创建多个线程,并且一旦每个组中有 4 个线程,它们才能被释放以一致地工作,否则它们必须被搁置/等待。例如:
- 线程 a、b、c 加入第 7 组,它们都被搁置/等待。
- 线程 d 加入组 7,所有四个线程 (a,b,c,d) 都被通知终止。
- 线程 e,f,g,h,i 加入第 8 组,在这种情况下,当线程 i 处于等待状态时,e,f,g,h 将发出终止信号。
- 线程 j 加入第 7 组,处于等待状态。
这是我完成的一般任务。我正在处理的任务要求我们释放组中的前 4 个初始线程,其余的应该等到前面的 4 个线程调用完成()。
例如,3 个线程加入组 65,它们处于等待状态。另一个线程加入组 65,所有 4 个线程一起释放。现在有 4 个线程正在工作(已终止)。现在线程 e,f,g,h,i,j,k,l 加入组 65。所有线程都等待直到 e,f,g,h 调用了 finished() 方法。
这是我到目前为止所做的:
ExtrinsicSync.java:
外部同步测试.java:
ConditionWrapper.java:
我遇到的问题是我能够释放每个组的前四个线程,但不知何故,某处有 2 个线程被随机终止,我无法弄清楚发生了什么。例如,将上面的 22 个线程测试用例分为两组,只有 8 个线程应该被终止,其余的线程等待。
但是这里有 10 个线程被终止。我不明白发生了什么事。我已尽我所能将代码精简到最低限度。
triangulation - 使用 N 个视图的基本矩阵进行 3D 重建?
使用 OpenCV,我计算了我拥有的每对相机的内在和外在参数。我的问题是,我可以使用所有这些参数从多个视图中 3D 重建一组点吗?我可以使用捆绑调整来细化外部参数,在这种情况下我什至需要使用捆绑调整吗?到目前为止,我已经尝试根据之前的相机计算相机的位置,除了位于世界框架中心的第一个相机(0.0,0.0,0.0)。
python - 如何获得具有已知初始外在因素的相机的 3D 点?
我正在估计一个带有 apriltags 的物体的姿势。
使用标记半径 (tag_size/2) 找到 3D 点,如代码所示:
现在我必须估计一个带有 apriltags 的物体的姿势。我现在有了固定在对象上的 apriltags 的已知初始姿势(旋转和平移向量)。
我在旋转向量上使用了 Rodrigues 来获得旋转矩阵。使用这个:
我知道我还必须将平移向量应用于旋转矩阵。这将是 3x4 矩阵,也就是姿势。而且我知道 Z 将始终为“0”,但我对如何将其用于 3D 点感到迷茫。
我的问题是:
- 如何使用这些已知的外部参数来获取该对象的 3D 点?我是否解决了 X 和 Y 并将 Z 应用为 0?我该怎么做呢?
任何帮助将不胜感激!
c# - 如何根据同质 Matrix4x4 设置和更新相机位置?
我已经从 3D 扫描仪导出了 3D 模型和同质坐标。我想使用这个矩阵将相机定位在场景中并根据矩阵移动相机。我在方法中使用以下代码update
来做到这一点,
mainCam 是 MainCamera,值m11,m12,m13..
来自导出的值。有时相机投影看起来不错,但有时相机看起来或朝相反的方向移动。我错过了什么吗?
substrate - 支持外部复杂(结构)类型
我正在尝试在外部参数声明中使用以下结构:
这是外部声明:
这会导致编译错误:
有人可以解释对于复杂类型(例如结构/vecs/vecs 的结构/等)的外部参数的要求是什么?我看过 WrapperTypeEncode 文档https://docs.rs/parity-scale-codec/2.2.0/parity_scale_codec/trait.WrapperTypeEncode.html但他们没有拼出这些信息。
非常感谢!
camera - 从外在矩阵和内在矩阵中寻找相机位姿
我在 2 个位置获得了相机的内在和外在矩阵。虽然我能够计算它们在世界坐标中的相对相机中心,但如何计算这两个点之间的变换矩阵 [Rt]?谢谢!
opencv - 将网球场的顶点从 3D 投影到 2D 不起作用
背景
我已经定义了一个带有 3D 点的网球场,并且我正在尝试使用 OpenCV 将 3D 点投影为 2D 图像。
下面是我用来定义网球场的 3D 点。以供参考:
- 场上左边是-X,右边是+X,
- 向上是-Y,向下是+Y,并且
- 网的远端是+Z,近端是-Z。
- 点(0,0,0)是左侧线与网线(基本上是左侧网柱)的交点。
作为其他参考,这里是我的相机的内在矩阵和失真参数(使用 OpenCV 获得并经过验证):
这是我用来将每个 3D 点投影到 2D 并使用 Matplotlib 绘制点/线的代码。
问题
当我对这些点进行投影并绘制图表时,我希望得到一个看起来像网球场的东西,但我只得到了一团点!
为了排除故障,我决定使用球场的四个角(即 DefineCourtPoints 中的前四个点)仅绘制球场的外边缘。我希望看到一个矩形或平行四边形,因为它们是矩形的有效投影。但是,我得到如下内容,这实际上没有任何意义,因为它已经越界了:
上面的结果是使用R = [0, 0, 0]
和获得的T = [0, -10, 0]
以下是上述结果的四个点的坐标,表明我并没有通过以错误的顺序绘制线条来导致奇怪的形状:
问题
为什么对于像矩形/网球场边界这样简单的 3D 对象,我会得到如此奇怪的投影?
有人得到和我一样的结果吗?
谢谢!
自己试试