使用ORB类的计算方法生成的描述符数组是什么?

时间:2015-06-12 11:29:14

标签: python image opencv orb

我在Python中使用OpenCV来制作给定图像的特征描述符。为此,我使用的是orb.detect类。我不明白的是使用orb.computeimport cv2 from matplotlib import pyplot as plt from sklearn.cluster import KMeans img = cv2.imread('penguins.jpg',0) # Initiate STAR detector orb = cv2.ORB_create(nfeatures=1000) # find the keypoints with ORB kp = orb.detect(img,None) # compute the descriptors with ORB kp, des = orb.compute(img, kp) # draw only keypoints location,not size and orientation img2 = cv2.drawKeypoints(img,kp,des, color=(0,255,0), flags=0, ) plt.imshow(img2),plt.show() print len(kp),len(des),len(des[1]), des[0] 方法后描述符数组包含的内容。

以下是我的代码。

1000 1000 32 [221  65  79 237   6   2 111 112 116 194 243  70  83  99 177 113 118 228
  62 238 233 181  37  76 244 171 230 128  45 178  96  49]

最后一行的输出如下:

des

为什么{{1}}的每个元素的长度是32?它代表什么?我知道它应该是一个对应于每个关键点的描述符数组,但这些数字到底代表什么呢?

我已尝试过此link的上述代码。

1 个答案:

答案 0 :(得分:0)

每个ORB描述符的默认长度为32字节。每个字节包含8个像素强度比较,如官方文件中所述:https://www.willowgarage.com/sites/default/files/orb_final.pdf

同时检查:OpenCV ORB descriptor - how exactly is it stored in a set of bytes?