Почему Keypoint_convert терпит неудачу, если применяется дважды? - PullRequest
1 голос
/ 04 февраля 2020

Я пытаюсь выполнить операции с дескрипторами точек на изображении, и при этом полезно получить numpy представление 2D-координат моих точек, применяя к нему некоторое линейное преобразование и преобразовывая его обратно в список. из cv2.KeyPoint объектов.

Мне кажется, что я не могу этого сделать, и моя проблема, похоже, сводится к тому, что в коде

import cv2
import imutils

img = imutils.url_to_image('https://upload.wikimedia.org/wikipedia/en/7/7d/Lenna_%28test_image%29.png') 
detector = cv2.AKAZE_create()
gray_image = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
kpts, desc = detector.detectAndCompute(gray_image, None)
coords = cv2.KeyPoint_convert(kpts)

# here I would to stuff with coords   
# and then finally 
transformed_kpts = cv2.KeyPoint_convert(coords)

последняя строка не выполняется.

Упрощение вещей, еще большее простое выполнение, например

cv2.KeyPoint_convert(cv2.KeyPoint_convert(kpts))

, аварийное завершение с

OpenCV (4.1.2) / io / opencv / modules / core /src/copy.cpp:254: ошибка: (-215: подтверждение не выполнено) channel () == CV_MAT_CN (dtype) в функции 'copyTo'

Это ошибка или я делать что-то в корне неправильно?

Из документов мне кажется, что применение функции дважды в списке ключевых точек должно работать нормально и вернуть мне исходный список.

My cv2.__version__ составляет 4.1.2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...