我在Python中有以下代码
import cv2
import numpy as np
def save_keypoints(image_path, type_image):
img = cv2.imread(image_path)
gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
kp, descriptors =cv2.BRISK_create(10).detectAndCompute(gray,None)
mg=cv2.drawKeypoints(gray, kp, None,
flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
cv2.imwrite('brisk_keypoints-'+ type_image+'.jpg',mg)
if __name__=="__main__":
save_keypoints("original.bmp" ,"original")
save_keypoints("fake600.bmp" ,"fake600")
save_keypoints("fake1200.bmp" ,"fake1200")
save_keypoints("fake2400.bmp" ,"fake2400")
基本上,该代码将保存检测到BRISK关键点的图像。然而,这是应用此代码在四个图像中的结果:
虽然这些图像不同(我可以很容易地通过使用这些BRISK描述符在视觉单词包方法中来区分它们),但似乎所有这四个图像中检测到的关键点在视觉上相同,或者说高数量的同心圆会使观察者感到困惑。如何减少显示的关键点数量,以便我可以通过这些描述符看到这些图像的不同之处?