在opencv python中分解Homography矩阵

时间:2017-01-07 20:42:33

标签: python opencv image-processing

H = K [R | t] 其中H(3 * 3)是单应矩阵,R是旋转矩阵,K是摄像机内在参数的矩阵,t是平移向量。

我使用棋盘图案计算K如下

ret, K, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, chess_gray.shape[::-1],None,None)

Homograpy矩阵H计算为

pts_src = np.float32(pts_src)
pts_dst = np.float32(pts_dst)
H, status = cv2.findHomography(pts_src, pts_dst)

如何使用

从H和K分解R和t
cv2.decomposeHomograpyMat(H,K,....)

如何编写上述功能的其他输入和输出?

1 个答案:

答案 0 :(得分:1)

假设H为单应矩阵,K为相机矩阵,Python代码为:

num, Rs, Ts, Ns  = cv2.decomposeHomographyMat(H, K)

num 将返回可能的解决方案。

Rs包含旋转矩阵列表 Ts包含翻译向量列表 Ns包含平面法线向量的列表。

有关更多信息,请查看官方文档:
OpenCV 3.4 - decomposeHomographyMat()