• 大小: 544KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-23
  • 语言: Python
  • 标签: SIFT  SURF  PYTHON  OPENCV  

资源简介

使用SIFT或者SURF特征进行图像匹配,实现语言为python2.7+opencv3.1,代码有注释,有文档说明,并配有测试图像资源

资源截图

代码片段和文件信息

# -*- coding:utf-8 -*- -
import cv2
import numpy as np

img1 = cv2.imread(‘1.bmp‘)
gray1= cv2.cvtColor(img1 cv2.COLOR_BGR2GRAY)
sift1 = cv2.xfeatures2d.SIFT_create()
#sift1 = cv2.xfeatures2d.SURF_create() #使用SURF
#kp1 关键点的坐标
#des1 每个关键点的特征向量(1 128)
kp1 des1 = sift1.detectAndCompute(gray1 None)
#img1 = cv2.drawKeypoints(gray1 kp1 img1)

img2 = cv2.imread(‘3.bmp‘)
gray2 = cv2.cvtColor(img2 cv2.COLOR_BGR2GRAY)
sift2 = cv2.xfeatures2d.SIFT_create()
#sift2 = cv2.xfeatures2d.SURF_create() #使用SURF
kp2 des2 = sift2.detectAndCompute(gray2None)
#img2 = cv2.drawKeypoints(gray2 kp2 img2)

def drawMatchesKnn_cv2(img1_gray kp1 img2_gray kp2 goodMatch):
    h1 w1 = img1_gray.shape[:2]
    h2 w2 = img2_gray.shape[:2]

    vis = np.zeros((max(h1 h2) w1 + w2 3) np.uint8)
    for i in xrange(3):
        vis[:h1 :w1 i] = img1_gray
        vis[:h2 w1:w1 + w2 i] = img2_gray

    p1 = [kpp.queryIdx for kpp in goodMatch]
    p2 = [kpp.trainIdx for kpp in goodMatch]

    post1 = np.int32([kp1[pp].pt for pp in p1])
    post2 = np.int32([kp2[pp].pt for pp in p2]) + (w1 0)

    for (x1 y1) (x2 y2) in zip(post1 post2):
        cv2.line(vis (x1 y1) (x2 y2) (0 0 255))

    cv2.namedWindow(“match“ cv2.WINDOW_NORMAL)
    cv2.imshow(“match“ vis)


# BFmatcher with default parms
bf = cv2.BFMatcher(cv2.NORM_L2)
# k:表示最近邻k个
# matches: 匹配的特征点,shape=(n k),n个匹配,每个匹配有k个可能的匹配特征点
# 每个匹配有k个DMatch元素,每个DMatch指示了原图像和目标图像的关键点序号
matches = bf.knnMatch(des1 des2 k=2)
print len(matches)

goodMatch = []
for m n in matches:
    if m.distance < 0.50 * n.distance:
        goodMatch.append(m)

drawMatchesKnn_cv2(gray1 kp1 gray2 kp2 goodMatch[:20])

cv2.waitKey(0)
cv2.destroyAllWindows()

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     280350  2018-01-11 21:26  hello\1.bmp

     文件      70434  2018-06-02 10:05  hello\3.bmp

     文件       1927  2018-06-02 19:13  hello\SIFT.py

     目录          0  2018-06-02 19:13  hello

     文件     243958  2018-06-02 18:46  SIFT+SURF+OPENCV实现.docx

----------- ---------  ---------- -----  ----

               596669                    5


评论

共有 条评论