程序在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()