导入c v2导入编号as NP #读取图像img1=cv2.imread(01.jpg ) img2=cv2.imread )计算SURF特征点和相应描述符surf=cvvg ) )。 des1=surf.detectandcompute (img 1, None ) ) KP为特征点坐标,des为对应描述符kp2,des2=surf.detectandcompute ) img2,None )匹配特征点描述符BF=cv2.BF matcher (matches=matcher ) k=2) #提取匹配良好的特征点good=[]for m,ninmatches3360ifm.distance0.7* 根据n.distance:good.append(m )特征点坐标计算单响应矩阵h ) (findHomography中使用RANSAC算法消除了初始失配(src _ pts=NP.) ).reshape (-1,1,2 ) dst _ pts=NP.float 32 (kp2 [ m.train idx ].ptformingood ).reshape (-1,1,2 ) h, 使用mask=cv2.findhomogod 5.0 ) Matchesmask=mask.ravel(.tolist ) )同构矩阵计算变换结果,h,w,d=img1. shape pts=NP . 出图2 ) dst=cv2.perspective transform (pts,h ) img2=cv2.polylines ) img2,[NP.int32(dst] ),True,255,3,] matchesMask=matchesMask,flags=2) img3=cv2 .仅绘制符合条件的inliers点* draw _ params (dir='//)