Я пытаюсь выполнить операции с дескрипторами точек на изображении, и при этом полезно получить 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.