python+opencv特征匹配算法

python+opencv特征匹配算法

1.安装

python 复制代码
pip install opencv-python
pip install numpy

2.算法明细

python 复制代码
import cv2
import numpy as np

# 读取两张图像
img1 = cv2.imread('image1.jpg',0)  # queryImage
img2 = cv2.imread('image2.jpg',0)  # trainImage

# 初始化SIFT对象
sift = cv2.xfeatures2d.SIFT_create()

# 计算两个图像的SIFT特征和描述符
kp1, des1 = sift.detectAndCompute(img1,None)
kp2, des2 = sift.detectAndCompute(img2,None)

# 使用FLANN匹配器进行特征匹配
FLANN_INDEX_KDTREE = 1
index_params = dict(algorithm = FLANN_INDEX_KDTREE, trees = 5)
search_params = dict(checks=50)
flann = cv2.FlannBasedMatcher(index_params, search_params)
matches = flann.knnMatch(des1,des2,k=2)

# 根据Lowe的比率测试进行匹配
good_matches = []
for m,n in matches:
    if m.distance < 0.7*n.distance:
        good_matches.append(m)

# 计算并输出相似度
similarity = len(good_matches)/len(matches)
print('相似度: ', similarity)

# 输出匹配结果
img3 = cv2.drawMatches(img1,kp1,img2,kp2,good_matches,None,flags=cv2.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS)

# 显示匹配结果
cv2.imshow('Matches', img3)
cv2.waitKey(0)
cv2.destroyAllWindows()

3.报错处理

python 复制代码
AttributeError: module 'cv2' has no attribute 'xfeatures2d'

由于该算法已被申请专利,只能使用低版本

python 复制代码
pip install opencv-python==3.4.2.16
pip install opencv-contrib-python==3.4.2.16
相关推荐
小欣加油1 分钟前
leetcode 429 N叉树的层序遍历
数据结构·c++·算法·leetcode·职场和发展
b***66612 分钟前
Python 爬虫实战案例 - 获取社交平台事件热度并进行影响分析
开发语言·爬虫·python
民乐团扒谱机2 分钟前
【元启发算法】SMA黏菌算法:当自然智慧走进代码世界
算法
chushiyunen11 分钟前
django使用笔记
笔记·python·django
Kuo-Teng22 分钟前
LeetCode 142: Linked List Cycle II
java·算法·leetcode·链表·职场和发展
2501_9411113432 分钟前
实战:用OpenCV和Python进行人脸识别
jvm·数据库·python
ada7_32 分钟前
LeetCode(python)——73.矩阵置零
python·算法·leetcode·矩阵
小龙报44 分钟前
《算法通关指南C++编程篇 --- 初阶函数递归专题》
c语言·开发语言·c++·算法·创业创新·学习方法·visual studio
程序员爱钓鱼44 分钟前
Python编程实战:用好 pdb 和 logging,程序再也不黑箱运行了
后端·python·trae
程序员爱钓鱼1 小时前
Python编程实战:从 timeit 到 cProfile,一次搞懂代码为什么慢
后端·python·trae