Python 如果应用两次,为什么Keypoint_转换失败?

Python 如果应用两次,为什么Keypoint_转换失败?,python,opencv,Python,Opencv,我正在尝试对图像上的点描述符进行操作,在这样做的同时,获取关键点的2D坐标的numpy表示非常有用,对其应用一些线性变换,并将其转换回cv2.KeyPoint对象列表 我似乎没有做到这一点,我的问题似乎可以归结为以下事实:在代码中 import cv2 import imutils img = imutils.url_to_image('https://upload.wikimedia.org/wikipedia/en/7/7d/Lenna_%28test_image%29.png') de

我正在尝试对图像上的点描述符进行操作,在这样做的同时,获取关键点的2D坐标的numpy表示非常有用,对其应用一些线性变换,并将其转换回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))
撞车

OpenCV4.1.2/io/opencv/modules/core/src/copy.cpp:254:错误: -215:断言失败的通道==函数中的CV_MAT_CNdtype “抄袭”

这是一个bug还是我做了一些根本错误的事情

在我看来,在关键点列表上应用函数两次应该运行良好,并返回原始列表


我的cv2.版本是4.1.2。

cv2.关键点转换KPTS->pts2f的输出是一个n,2 n阵列


cv2.KeyPoint_converts2f->kpts的输入应为n,1,2 ndarray

感谢您提供答案。请编辑您的答案,包括对代码的解释,好吗?这将有助于未来的读者更好地理解正在发生的事情,尤其是那些对该语言不熟悉并努力理解其概念的社区成员。此外,您还可以添加文档链接,以便人们可以阅读更多有关该语言的信息。