【opencv】利用opencv进行图像识别与定位 您所在的位置:网站首页 欧冠是哪些球队参加 【opencv】利用opencv进行图像识别与定位

【opencv】利用opencv进行图像识别与定位

2024-05-22 01:19| 来源: 网络整理| 查看: 265

SIFT检测方法

SIFT算法就是把图像的特征检测出来,通过这些特征可以在众多的图片中找到相应的图片

import cv2 #读取图片,以1.png为例 img=cv2.imread('1.png') #检测关键点并计算描述 sift=cv2.xfeatures2d.SIFT_create() #描述符是对关键点的描述,可用于图片匹配 keypoints,descriptor=sift.detectAndCompute(img,None) #将关键点勾画到图片上 flags=cv2.DRAW_MATCHES_FLAGS_DEFAULT color=(0,255,0) #参数image代表原始图片 #参数outImage是指输出在哪张图片上 #参数keypoints代表图片的关键点 #参数flags代表关键点的勾画方式 #参数color代表勾画的色彩模式 img=cv2.drawKeypoints(image=img,outImage=img,keypoints=keypoints,flags=flags,color=color) #显示图片 cv2.imshow('sift_keypoints',img) cv2.waitKey()

将上图处理过后,就变为了如下所示

 

 

 

下面图像特征检测选择SIFT算法,图像匹配算法选择FLANN算法,:

用此图像2.png与下图1.png进行匹配

 

import cv2 img1=cv2.imread('1.png') img2=cv2.imread('2.png') #使用SIFT算法获取图像特征的关键点和描述符 sift=cv2.xfeatures2d.SIFT_create() kp1,des1=sift.detectAndCompute(img1,None) kp2,des2=sift.detectAndCompute(img2,None) #定义FLANN匹配器 indexParams=dict(algorithm=0,trees=10) searchParams=dict(checks=50) flann=cv2.FlannBasedMatcher(indexParams,searchParams) #使用KNN算法实现图像匹配,并对匹配结果排序 matches=flann.knnMatch(des1,des2,k=2) matches=sorted(matches,key=lambda x:x[0].distance) #去除错误匹配,0.5是系数,系数大小不同,匹配的结果页不同 goodMatches=[] for m,n in matches: if m.distance


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有