python3.6 opencv 3.4.2 ORB 算法

程序在jupyter notebook下运行过

#ORB drawkeypoints
import numpy as np
import cv2
from matplotlib import pyplot as plt

%matplotlib inline

img = cv2.imread(‘1.png’,1)
orb = cv2.ORB_create()#默认是500
kp= orb.detect(img,None)
kp,des = orb.compute(img,kp)
img2 = cv2.drawKeypoints(img,kp,None,color=(0,255,0),flags=0)
plt.show(img2)
plt.show()

cv2.imshow(‘img’,img2)
cv2.waitKey(0)
cv2.destroyAllWindows()

两种显示方式,是因为opencv和matplotlib读取图像的方式不同,opencv是BGR模式,matplotlib是RGB模式,运行程序后即可发现两种显示方式的图像不同。

#ORB
import numpy as np
import cv2
from matplotlib import pyplot as plt

%matplotlib inline

img = cv2.imread(‘1.png’,1)
img = cv2.imread(‘2.png’,2)

orb = cv2.ORB_create()#默认是500

kp1,des1 = orb.detectAndCompute(img1,None)
kp2,des2 = orb.detectAndCompute(img2,None)

bf = cv2.BFMatcher(cv2.NORM_HAMMING,crossCheck=True)

matches = bf.match(des1,des2)

matches = sorted(matches,key = lambda x:x.distance)

#draw first 10 matches
img3 = cv2.drawMatches(img1,kp1,img2,kp2,matches[:10],None,flags=0)
plt.show(img3)
plt.show()

cv2.imshow(‘img’,img3)
cv2.waitKey(0)
cv2.destroyAllWindows()

猜你喜欢

转载自blog.csdn.net/weixin_43763724/article/details/85292975