通过opencv获取摄像头图像,分析出摄像头前的识别物体 旋转的角度,并加载相应3d模型,进行高精度对应。工程比较大,一点一点来,此博文主要将通过opencv分析得出识别物的旋转角度
import cv2
import math
两个核心,cv2的版本参考之前博文,因为用到xfeatures2d
加载图片
img1 = cv2.imread('img/face1-c5.png',0)
img2 = cv2.imread('img/face1-z1.png',0)
获取特征点,此处喜欢用SURF方式,因为精度参数比较容易配置
sift = cv2.xfeatures2d.SURF_create(float(500))
kp1, des1 = sift.detectAndCompute(img1,None)
kp2, des2 = sift.detectAndCompute(img2,None)
定义FLANN匹配器,开始knn匹配
index_params = dict(algorithm = 1, trees = 5)
search_params = dict(checks = 50)
flann = cv2.FlannBasedMatcher(index_params, search_params)
matches = flann.knnMatch(des1,des2,k=2) #k越高,精度越高,匹配的越少
去除错误匹配
for m,n in matches:
if m.distance < 0.7*n.distance: