使用sift实现关键点(特征点)检测
1、本文实现特征点(角点是一种特征点)获取和标识,特征点的描述的匹配实现未做处理,为下一步特征点描述和匹配做铺垫。各种数学性质,请自行百度查询。

2、import cv2 as cvimport copyimage = cv.imread('c:\\meiping1.png')cv.imshow("image", image)image1 = copy.copy(image)image2 = copy.copy(image)继续以梅瓶为例copy几个图像为输出特征点

4、SIFT特征计算使用xfeatures2d.SIFT_create完成S诔罨租磊IFT特征点初始化sift = cv.xfeatures2d.SIFT_cr髫潋啜缅eate()sift.detectAndCompute实现特征点和特征点描述分别输出。keypoints, features = sift.detectAndCompute(gray, None)print(keypoints)坐标点print(keypoints[0].pt[0], keypoints[0].pt[1])特征点描述,后期用于匹配。print(features)

6、for k in keypoints: cv.circle(image2, (int(k.pt[0]), int(k.pt[1])), 2, (255, 255, 0), 1)cv.imshow("image1", image1)cv.imshow("image2", image2)k = cv.waitKey(0)cv.destroyAllWindows()手动绘制圆圈 效果和drawKeypoints差不多

7、小结:1)不论自己画还是调用函数画圈 都可以2)sift = cv.xfeatures2d.SIFT_create()keypoints, features = sift.detectAndCompute(gray, None)实现特征点检测3)opencv contrib的安装