似乎我的问题的答案非常明显,但遗憾的是我无法理解,请帮助我!
我正在尝试使用vtk库来获取python中的icp转换。
我在这里运行此代码: http://www.vtk.org/Wiki/VTK/Examples/Python/IterativeClosestPoints
然后
print icp.GetLandmarkTransform()
结果显示转换矩阵等。
...
Elements:
-> 1 4.76975e-10 0 -7.79873e-10
-> -4.76975e-10 1 -0 1.58991e-10
-> -0 0 1 0
-> 0 0 0 1
Mode: RigidBody
...
如何在numpy数组中提取转换矩阵? 我只需要2D数据集的变换。有没有更简单的方法呢?
提前谢谢!
答案 0 :(得分:3)
在向朋友寻求帮助后,他向我提供了答案。只是发布以防有人需要它:
for i in range(3):
for j in range(4):
print icp.GetLandmarkTransform().GetMatrix().GetElement(i, j),
print
print
答案 1 :(得分:2)
一般来说,vtk矩阵可以作为python列表提取:
temp = [0] * 16 #the matrix is 4x4
vtk_matrix.DeepCopy(temp, vtk_matrix)
答案 2 :(得分:1)
只是一个帮助函数,我用来做同样的事情。
def vtkmatrix_to_numpy(matrix):
"""
Copies the elements of a vtkMatrix4x4 into a numpy array.
:param matrix: The matrix to be copied into an array.
:type matrix: vtk.vtkMatrix4x4
:rtype: numpy.ndarray
"""
m = np.ones((4, 4))
for i in range(4):
for j in range(4):
m[i, j] = matrix.GetElement(i, j)
return m