opencv - 投影矩阵和三角点
问题描述
我对在opencv(TriangulatePoints)中为三角测量函数准备投影矩阵有疑问。我有我的无人机,它的位置是已知的和旋转的。所以这是计算投影矩阵的函数:
def projection_matrix(x, y, z, theta, K):
R_x = np.array([[1, 0, 0],
[0, np.cos(theta[0]), -np.sin(theta[0])],
[0, np.sin(theta[0]), np.cos(theta[0])]
])
R_y = np.array([[np.cos(theta[1]), 0, np.sin(theta[1])],
[0, 1, 0],
[-np.sin(theta[1]), 0, np.cos(theta[1])]
])
R_z = np.array([[np.cos(theta[2]), -np.sin(theta[2]), 0],
[np.sin(theta[2]), np.cos(theta[2]), 0],
[0, 0, 1]
])
R = np.dot(R_z, np.dot(R_y, R_x))
t = np.array([x, y, z])
C = np.dot(-np.matrix.transpose(R),t)
R_C = np.matrix.transpose(R)
Rt = np.zeros((3, 4))
Rt[:3, :3] = R_C
Rt[:3, 3] = C
P = np.dot(K, Rt)
return P
接下来我在函数中输入值:
P1 = projection_matrix(x=x, y=z, z=y, theta=[0, -theta, 0], K=K)
P0 = projection_matrix(x=0, y=0, z=0, theta=[0, 0, 0], K=K)
我从校准中得到的相机矩阵。
所以接下来是在 2 张图像上获得相同的 2d 点。我用 SIFT 方法得到了这个然后我使用 TriangulatePoints(P0, P1, points_left, points_right)
我得到奇怪的结果。任何人都知道哪里可能出错
解决方案
推荐阅读
- python - 漂亮的汤刮取一个不是首先出现的变量
- java - 如何在 JavaFX11 中设置多个 ImageView 的样式以不违反 DRY
- javascript - Javascript 将样式附加到 event.target
- highcharts - PieChart (HighCharts) 数据和标签
- python - 在 Python 中访问多索引系列中的值
- java - 将伪代码转换为 Scala 时遇到问题
- arrays - JAVA -> 无重复的 4 位字符串的所有排列
- node.js - 如何在没有 async/await 的情况下解决麻烦的 for 循环和 Promise
- javascript - 具有条件的对象数组中的最大数量
- python - 如何确定文件类对象是否执行换行翻译?