Я использую OpenCV в Python, чтобы создать дескриптор функции изображения. Для этого я использую класс ORB
. Что я не понимаю, это то, что содержит массив дескрипторов после использования методов orb.detect
и orb.compute
.Что представляет собой массив дескрипторов, созданный с использованием метода вычисления класса ORB?
Ниже приведен мой код.
import 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
32? Что он представляет? Я знаю, что он должен быть массивом дескрипторов, соответствующим каждой ключевой точке, но что именно представляют эти цифры?
Я пробовал вышеуказанный код link.
Я думаю, вы можете посмотреть на вопрос (https://stackoverflow.com/questions/23676365/opencv-orb -descriptor-how-exact-is-it-stored-in-a-set-of-bytes), возможно, вы можете помочь вам – rainy