Настройка пользовательской области интереса для OpenCV BoundryBox в Python

Я пытаюсь реализовать Object Tracker с помощью OpenCV, и я новичок в Python. Я вызову его из кода C# через IronPython. Что я пытаюсь сделать, я хочу установить пользовательский прямоугольник в качестве параметра для трекера, а не выбирать его мышью.

(Код трекера является распространенным примером, который вы можете найти в Интернете)

Вот проблемная часть:

Вот как я устанавливаю и создаю прямоугольник

    initBB = cv2.rectangle(frame ,(154, 278),(173,183), (0, 255, 00),1)

Это метод инициализации Tracker.

tracker.init(frame, initBB)

и это ошибка

SystemError: формат getargs нового стиля, но аргумент не является кортежем

Если бы я хотел использовать «обычный» способ, набор initBB выглядел бы так:

        initBB = cv2.selectROI("Frame", frame, fromCenter=False,
        showCrosshair=False)

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

Спасибо! Хорошего дня!


person İsmail Barış    schedule 16.08.2018    source источник


Ответы (1)


Ваша ошибка связана с непониманием того, что делает cv2.rectangle.

Он не возвращает прямоугольник, как вы себе представляете. На самом деле это функция рисования. Он рисует прямоугольник на изображении, которое вы передаете в качестве аргумента, и возвращает None.

Прямоугольник — это просто кортеж в Python со следующими координатами: (start_col, start_row, width, height). Вы можете создать его без использования функции OpenCV.

person Sunreef    schedule 16.08.2018
comment
Благодарю вас! Для тех, кто нуждается в помощи в качестве примера, это как ; initBB = (154, 278,173,183) - person İsmail Barış; 16.08.2018