小格式自压原创区,摸jj,哈士奇幼犬
如下图为进行测试的q和h,分别验证基于bfmatcher、flannbasedmatcher等的sift算法
代码如下:
import numpy as np import cv2 from matplotlib import pyplot as plt imgname1 = 'g:/q.jpg' imgname2 = 'g:/h.jpg' sift=cv2.xfeatures2d.sift_create() img1 = cv2.imread(imgname1) gray1 = cv2.cvtcolor(img1, cv2.color_bgr2gray) #灰度处理图像 kp1, des1 = sift.detectandcompute(img1,none) #des是描述子 img2 = cv2.imread(imgname2) gray2 = cv2.cvtcolor(img2, cv2.color_bgr2gray)#灰度处理图像 kp2, des2 = sift.detectandcompute(img2,none) #des是描述子 #hmerge = np.hstack((gray1, gray2)) #水平拼接 #cv2.imshow("gray", hmerge) #拼接显示为gray #cv2.waitkey(0) #img3 = cv2.drawkeypoints(img1,kp1,img1,color=(255,0,255)) #画出特征点,并显示为红色圆圈 #img4 = cv2.drawkeypoints(img2,kp2,img2,color=(255,0,255)) #画出特征点,并显示为红色圆圈 #hmerge = np.hstack((img3, img4)) #水平拼接 #cv2.imshow("point", hmerge) #拼接显示为gray #cv2.waitkey(0) # bfmatcher解决匹配 bf = cv2.bfmatcher() matches = bf.knnmatch(des1,des2, k=2) # 调整ratio good = [] for m,n in matches: if m.distance < 0.75*n.distance: good.append([m]) img5 = cv2.drawmatchesknn(img1,kp1,img2,kp2,good,none,flags=2) cv2.imshow("bfmatch", img5) cv2.waitkey(0) cv2.destroyallwindows()
效果如下:
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python爬虫:Request Payload和Form Data的简单区别说明
浅谈Python中threading join和setDaemon用法及区别说明
Python3-异步进程回调函数(callback())介绍
python继承threading.Thread实现有返回值的子类实例
Python中使用threading.Event协调线程的运行详解
网友评论