python - 根据相机位置查找两个原点之间的平移
问题描述
我已经根据相机视野中的两个原点确定了相机位置。假设原点 1 位于 (140,200),原点 2 位于 (70,180)。
以下是相对于原点 1 和原点 2 的相机位置。
X1,Y1,Z1,X2,Y2,Z2 = 0.8361721744324895,-0.5131803297263005,1.3708440418732257,0.09985411281689659,0.3329507542440152,1.342809058827907
而 (X1, Y1, Z1) 是相对于原点 1 的相机位置,而 (X2, Y2, Z2) 是相对于原点 2 的相机位置。
我使用以下代码来计算两个来源之间的转换。
dist = math.sqrt((X1-X2) ** 2 + (Y1-Y2) **2 + (Z1-Z2)**2)
但是,该值是一个标量,而不是基于它们各自相机位置的原点之间的平移的向量 (XYZ) 值。如何获得 XYZ 距离?
解决方案
除了你的两个起源之外,考虑第三个起源。
对于这第三个原点,让相机、第一原点和第二原点的位置向量分别为r_c
、r_1
和r_2
。
相对于第一个原点,令相机的位置向量为r_c_1
相对于第二个原点,令相机的位置向量为r_c_2
使用--
向量减法的符号,我们有:
r_c_1 = r_c -- r_1
r_c_2 = r_c -- r_2
从上述两个方程中,从另一个方程中减去一个方程,我们得到:
r_c_2 -- r_c_1 = (r_c -- r_2) -- (r_c -- r_1)
其中,在简化时,给出:
r_c_2 -- r_c_1 = r_1 -- r_2
在上面的等式中,RHS 就是你想要的(两个原点之间的平移向量)。LHS 是两个原点下相机位置之间的矢量减法。
因此,如果向量以 3 元组表示法表示,则分别为 letr_c_1
和r_c_2
be(x1, y1, z1)
和(x2, y2, z2)
。然后,从上面的等式,需要“原点平移向量”将(x2-x1, y2-y1, z2-z1)
推荐阅读
- javascript - 当使用延迟加载 Angular 6 时,ngrx 的最佳文件夹结构是什么?
- spring-boot - 网关和聚合器 - CorrelationStrategy 错误
- linux - 从硬件 IRQ 号获取 Linux IRQ 号
- asp.net-mvc - 将 Angular 路由与 MVC 路由连接起来
- python - 詹金斯将路径传递给python参数作为变量
- vue.js - VueJS 编译生产时出现语法错误
- scala - 如果 csv 列标题包含空格,则在 spark 中将 csv 转换为 parquet 会出错
- arrays - 程序找出在 k 分钟过去之前将发生的交换次数
- android - Android 应用程序在不处于调试模式时崩溃
- c# - 使用抽象类型参数将对象强制转换为 IList