运行环境:
- python3.6
- opencv3.4.15
- Opencv-contrib-python3.4.15
import cv2
import numpy as np
# 图像处理展示
def cvshow(name, img):
cv2.imshow(name, img)
cv2.waitKey(0)
# cv2.destroyAllWindows()
# SURF特征点检测
def surf_kp(image):
# 灰度图
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 设置Hessian矩阵值,值越大,检测出特征点越精确
surf = cv2.xfeatures2d.SURF_create(hessianThreshold=15000)
# 提取出surf特征点和坐标
kp, des = surf.detectAndCompute(image, None)
# 灰度图特征点描述
kp_image = cv2.drawKeypoints(gray_image, kp,None, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
return kp_image, kp, des
# 特征点匹配
def get_good_match(des1, des2):
# FlannBasedMatcher特征匹配算法(最近邻搜索)
FLANN_INDEX_KDTREE = 0 # 建立FLANN匹配器的参数
indexParams = dict(algorithm=FLANN_INDEX_KDTREE, trees=