Параметры CV2 ORB

Я реализовал детектор сфер cv2 и сопоставитель грубой силы. Оба работают с большими изображениями.

Однако, когда я обрезаю изображения в интересующей области и снова запускаю их, никаких функций не обнаруживается.

Я хотел бы настроить параметры, но не могу получить доступ к переменным моего дескриптора шара, который является всего лишь ссылкой

ORB:> ORB00000297D3FD3EF0 \ ‹

Я также пробовал документацию cpp без каких-либо результатов. Я хочу знать, какие параметры дескриптор использует по умолчанию, а затем адаптировать их с помощью перекрестной проверки.

заранее спасибо

"ORB Features"
def getORB(img):
    #Initiate ORB detector
    orb = cv2.ORB_create()

    #find keypoints
    kp = orb.detect(img)

    #compute despriptor
    kp, des = orb.compute(img,kp)
    # draw only keypoints location,not size and orientation
    img2 = cv2.drawKeypoints(img, kp, None, color=(0,255,0), flags=0)
    plt.imshow(img2), plt.show()
    return kp,des

person Max Krappmann    schedule 28.12.2017    source источник
comment
вы проверили, stackoverflow.com/ вопросы / 32702433 /? разместить свой код для воспроизведения?   -  person ZF007    schedule 29.12.2017
comment
да, я сделал это, а также изменил параметры в соответствии с постом без каких-либо изменений в результатах. Код будет обновлен   -  person Max Krappmann    schedule 29.12.2017


Ответы (1)


Вы должны использовать функцию Python dir(...) для проверки непрозрачного объекта - она ​​возвращает список методов, принадлежащих этому объекту:

>>> dir(orb)
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', ...]

Совет: отфильтруйте все методы, которые начинаются с подчеркивания (соглашение для частных)

>>> [item for item in dir(orb) if not item.startswith('_')]
['compute', 'create', 'defaultNorm', 'descriptorSize', 'descriptorType',
'detect', 'detectAndCompute', 'empty', 'getDefaultName', 'getEdgeThreshold',
'getFastThreshold', 'getFirstLevel', 'getMaxFeatures', 'getNLevels', ...]

Это показывает все геттеры и сеттеры, которые вам понадобятся. Вот пример настройки - параметр MaxFeatures:

>>> kp = orb.detect(frame)

>>> len(kp)
1000

>>> orb.getMaxFeatures
<built-in method getMaxFeatures of cv2.ORB object at 0x1115d5d90>

>>> orb.getMaxFeatures()
1000

>>> orb.setMaxFeatures(200)

>>> kp = orb.detect(frame)

>>> len(kp)
200
person Eran W    schedule 09.09.2019