简单的ORB匹配算法:
# coding=utf-8
import cv2
import numpy as np
img1 = cv2.imread('test1.png')
img2 = cv2.imread('test12.png')
#最大特征点数,需要修改,5000太大。
orb = cv2.ORB_create(5000)
kp1, des1 = orb.detectAndCompute(img1,None)
kp2, des2 = orb.detectAndCompute(img2,None)
#提取并计算特征点
bf = cv2.BFMatcher(cv2.NORM_HAMMING)
#knn筛选结果
matches = bf.knnMatch(des1, trainDescriptors = des2, k = 2)
good = [m for (m,n) in matches if m.distance < 0.75*n.distance]
#查看最大匹配点数目
print len(good)
基于匹配算法,做了一个基于python的图像搜索引擎(github):