哪种列表是一个列表以及如何操作它?

我正在使用 OpenCV 以这种方式检测 BRISK 关键点:


img = cv2.imread(image_path)

gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

kp, descriptors = cv2.BRISK_create().detectAndCompute(gray,None)

kp 是一个列表,然而,它也是一种结构体。它具有参数或“子列表”,例如 kp.pt 值、kp。响应值等。我是 Python 的小菜鸟,所以我想知道以下内容。


1-此列表是否有特定名称?它似乎不是我习惯在 Python 中使用的列表。如何获取有关此类列表的更多信息?


2- 我怎么知道 kp 的其他参数(或“子列表”)是什么?我可以用 Python 打印它们吗?


3- 如何将所有元素保存在变量中,例如 kp.response?我只能索引这样的单个元素 kp[1].response


4-如何对 kp.response 值进行排序,获得 N 个最高 kp.response 值的索引?


慕丝7291255
浏览 136回答 1
1回答

喵喔喔

1-type(kp)这将获取该对象是其实例的类。2-dir(kp)这应该列出对象的属性。对于某些动态生成其属性以响应访问尝试的非常动态的类型,这可能不起作用。(但它仍然可能,因为dir也可以动态生成。)在这种情况下,如果您可以__getattr__在类的源代码中找到该方法,它可能会给您一个线索,这些动态属性实际存储在哪里。3-[e.response for e in kp]大概。通常,如果它是可索引的,那么它也是可迭代的。4-print([i for _, i in sorted((e.response, i) for i, e in enumerate(kp))[-N:]])没有测试过这个。也试试help(kp),它可能会解释如何更好地使用它。用help在任何你不明白的地方。它可能有一个文档字符串。现在我只需要弄清楚如何使用结果列表作为 kp 索引也许像[kp[i] for i in indexes]?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python