一个用SIFT特征比较图像相似度的python小程序

1 问题描述

把一堆图片按照与给出的一张图片的相似度进行排序

2 程序

可以从图片中提取SIFT特征,对两幅图片的SIFT特征进行匹配并按照一定条件删选就能得到两幅图片的匹配点个数,匹配点个数越多,相似度越高

import cv2
from matplotlib import pyplot as plt
import numpy as np
import os
import math


def getMatchNum(matches,ratio):
    '''返回特征点匹配数量和匹配掩码'''
    matchesMask=[[0,0] for i in range(len(matches))]
    matchNum=0
    for i,(m,n) in enumerate(matches):
        if m.distance

3 效果

样本图片:
一个用SIFT特征比较图像相似度的python小程序_第1张图片
需要排序的图片:
一个用SIFT特征比较图像相似度的python小程序_第2张图片排序结果:

你可能感兴趣的:(OpenCV)