资源简介
使用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
相关资源
- 二级考试python试题12套(包括选择题和
- pywin32_python3.6_64位
- python+ selenium教程
- PycURL(Windows7/Win32)Python2.7安装包 P
- 英文原版-Scientific Computing with Python
- 7.图像风格迁移 基于深度学习 pyt
- 基于Python的学生管理系统
- A Byte of Python(简明Python教程)(第
- Python实例174946
- Python 人脸识别
- Python 人事管理系统
- 基于python-flask的个人博客系统
- 计算机视觉应用开发流程
- python 调用sftp断点续传文件
- python socket游戏
- 基于Python爬虫爬取天气预报信息
- python函数编程和讲解
- Python开发的个人博客
- 基于python的三层神经网络模型搭建
- python实现自动操作windows应用
- python人脸识别(opencv)
- python 绘图(方形、线条、圆形)
- python疫情卡UN管控
- python 连连看小游戏源码
- 基于PyQt5的视频播放器设计
- 一个简单的python爬虫
- csv文件行列转换python实现代码
- Python操作Mysql教程手册
- Python Machine Learning Case Studies
- python获取硬件信息
评论
共有 条评论