旋轉向量和旋轉矩陣的互相轉換(python cv2.Rodrigues()函數)

處理矩陣三維轉換時,通常採用旋轉矩陣,但是旋轉變換其實只有三個自由度,用旋轉向量表達時更爲簡潔。因此,需要實現從旋轉向量和旋轉矩陣之間的互轉換。
旋轉向量和旋轉矩陣之間可以通過羅德里格斯公式進行轉換:

代碼實現:
可以直接採用opencv中的Rodrigues函數實現,函數原型:

void Rodrigues( InputArray src, OutputArray dst, OutputArray jacobian = noArray() );

參數:
輸入src:旋轉向量(3*1或者1*3)或者旋轉矩陣(3*3);
輸出dst:旋轉矩陣(3*3)或者旋轉向量(3*1或者1*3);
輸出jacobin:可選項,輸出雅克比矩陣(3*9或者9*3),輸入數組對輸出數組的偏導數。

python代碼舉例:

# -*- coding: UTF-8 -*-
import os
import cv2
import numpy as np
T = np.zeros((1,3), np.float32)
a = (0.2,0.4,0.8)
print (a)
R = cv2.Rodrigues(a)
print (R[0])
v3 = (R[0][2,1],R[0][0,2],R[0][1,0])
print (v3)
c = cv2.Rodrigues(v3)
print (c[0])
b = cv2.Rodrigues(R[0])
print (b[0])
p = (-2.100418,-2.167796,0.27330)
print(cv2.Rodrigues(p)[0])

例子如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章