#computer-vision
#компьютерное зрение
Вопрос:
я пытаюсь уменьшить размерность объектов, которые были извлечены с помощью ORB с PCA, затем нарисовать ключевые точки, которые были обработаны с помощью PCA
plt.rcParams['figure.figsize'] = [14.0, 7.0]
e1 = cv2.getTickCount()
#read image and convert to RGB
image_normal = cv2.imread(image)
image_query = cv2.cvtColor(image_normal, cv2.COLOR_BGR2RGB)
image_gray = cv2.cvtColor(image_query, cv2.COLOR_RGB2GRAY)
#ORB function
orb = cv2.ORB_create()
keypoints, descriptor = orb.detectAndCompute(image_gray, None)
# Draw the keypoints
image = cv2.drawKeypoints(image_query, keypoints,0,flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
mean, eigenvectors = cv2.PCACompute(image, np.mean(image, axis=0).reshape(1,-1))
e2 = cv2.getTickCount()
t = (e2 - e1) / cv2.getTickFrequency()
#Show Image
plt.imshow(image)
plt.title('ORB Keypoints')
plt.show()
# Print the number of keypoints detected and time
print("nNumber of keypoints Detected: ", len(keypoints))
print('Time Cost for ORB: ', (t))
при попытке я получил сообщение об ошибке, в котором говорится
ошибка: OpenCV (3.4.2) C:projectsopencv —
pythonopencvmodulescoresrc pca.cpp:72: ошибка: (-215: ошибка утверждения)
данные.каналы () == 1 в функции ‘cv::PCA::operator ()’
Комментарии:
1. Похоже, что вы пытаетесь вычислить PCA на изображении, на котором вы нарисовали ключевые точки, а не на вычисленных дескрипторах.
2. спасибо за ответ, как вычислить дескриптор с помощью PCA, я действительно новичок в opencv