为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕丝7291255 2021-07-22 18:04:50
我正在使用 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].response4-如何对 kp.response 值进行排序,获得 N 个最高 kp.response 值的索引?
查看完整描述

1 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

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]


查看完整回答
反对 回复 2021-07-28
  • 1 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信