我正在尝试在openCV中使用cv2.getAffineTransform(src,dst)函数,但它崩溃了,因为我的输入是包含125对x,y坐标的数组,而getAffineTransform希望它的输入有三列。我可以将一行充满零的行连接到我的阵列上,还是我应该做一个特殊的转换?
答案 0 :(得分:3)
不,我认为还有其他问题。文档说:cv2.getAffineTransform计算相应点的三对的仿射变换。
问题是你给它125分。它只需要3对点对应。这当然是解决线性方程组所需的对应数。如果你想从嘈杂的对应关系估计一个仿射变换,那么你将需要使用加权最小二乘或RANSAC之类的东西。要使用预先打包的算法估计噪声数据的仿射变换,看起来像cv2.estimateRigidTransform可能会设置fullAffine = True