cv2.triangulatePoints的输出指定为在均质坐标中的4xN重构点数组。
我想将此输出用作cv2.perspectiveTransform的src数组输入。 src被指定为两通道或三通道浮点数组。
什么是正确的方法来处理triangulatePoints输出数组,以便它适合PerspectiveTransform?
最佳答案
这帮助我弄清楚了:
http://answers.opencv.org/question/252/cv2perspectivetransform-with-python/
这是我的实现方式:
Tpoints1 = cv2.triangulatePoints(P_1, P_2, normRshp1, normRshp2)
#Grab the first three columns from the results to make a 3-N array
Tpt1 = np.array([Tpoints1[0],Tpoints1[1],Tpoints1[2]])
#Reshape to make a N-3 array
Tpt1 = Tpt1.reshape(-1,3)
#Make an array from the array resulting in [1,N,3]
Tpt1 = np.array([Tpt1])
#Reshape camera matrix to a 4x4 for input into perspectiveTransform
#we'll just add zeros and a one to the last row.
# from the TestTriangualtion function @,
#https://github.com/MasteringOpenCV/code/blob/master/Chapter4_StructureFromMotion/FindCameraMatrices.cpp
P_24x4 = resize(P_2,(4,4))
P_24x4[3,0] = 0
P_24x4[3,1] = 0
P_24x4[3,2] = 0
P_24x4[3,3] = 1
Tpoints1_projected = cv2.perspectiveTransform(Tpt1, P_24x4)