OpenCV-SURF AND SIFT
SIFT,即尺度不变特征变换(Scale-invariant feature transform,SIFT),是用于图像处理领域的一种描述。SURF是SIFT的加速版。
import cv2 as cv
def surf_demo(img):
# hessian矩阵阈值
surf = cv.xfeatures2d.SURF_create(10000)
# 寻找关键点
key_points, des_points = surf.detectAndCompute(img, None)
# 绘制关键点1
img = cv.drawKeypoints(img, key_points, img, flags=cv.DRAW_MATCHES_FLAGS_DEFAULT, color=(0, 0, 255))
dst = img.copy()
# 绘制关键点方法2
for i in key_points:
cv.circle(dst, (int(i.pt[0]), int(i.pt[1])), 1, (255, 0, 0))
cv.imshow("SURF image", img)
#cv.imshow("SURF image1", dst)
cv.imwrite("D:/testimage/SURF_image.jpg",img)
def sift_demo(img):
#创建 100:数量
sift=cv.xfeatures2d.SIFT_create(100)
#寻找关键点
key_points, des_points = sift.detectAndCompute(img, None)
# 绘制关键点
img = cv.drawKeypoints(img, key_points, img, flags=cv.DRAW_MATCHES_FLAGS_DEFAULT, color=(0, 0, 255))
cv.imshow("SIFT image", img)
cv.imwrite("D:/testimage/SIFT_image.jpg", img)
if __name__=='__main__':
#读取灰度图像
img=cv.imread("D:/testimage/dog.jpg",cv.IMREAD_GRAYSCALE)
surf_demo(img)
sift_demo(img)
cv.waitKey(0)
cv.destroyAllWindows()
SURF:

SIFT:


浙公网安备 33010602011771号