我正在使用 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]
?
添加回答
舉報
0/150
提交
取消