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:
SURF
SIFT:

SIFT

posted @ 2020-04-16 18:24  code_witness  阅读(61)  评论(0)    收藏  举报