Какой тип списка и как им манипулировать? - PullRequest
0 голосов
/ 24 октября 2018

Я использую 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?

1 Ответ

0 голосов
/ 24 октября 2018

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]?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...