Привіт усьому товариству програмістів!
Мені стало звично діставативизнання кожного алгоритму, який я використовую в проектах. Не так давно я реалізував методи бібліотеки OpenCV для виявлення контурів у вхідному кадрі, а також для малювання обмежувального прямокутника навколо виявленого об'єкта. Тому я поставив питання: який алгоритм насправді використовується OpenCV при виклику відповідних методів? (Я маю на увазі точні методи cv2.findContours і cv2.boundingRect)
Спасибі заздалегідь.
Відповіді:
4 для відповіді № 1Відповідно до документації OpenCV findcontours використовує "Suzuki, S. and Abe, K., Топологічний структурний аналіз оцифрованих бінарних зображень за кордоном"
Функція отримує контури з бінарного зображення за допомогою алгоритму [Suzuki85].
Я не знайшов опис алгоритму limitingRect, але знайшов цей файл у opencv repo
7.а. Прямокутний прямокутник Це прямий прямокутник, він не враховує обертання об'єкта. Тому площа обмежуючого прямокутника не буде мінімальною. Він знаходиться за допомогою функції cv2.boundingRect (). Нехай (x, y) - верхня ліва координата прямокутника, а (w, h) - його ширина і висота. @code {.py} x, y, w, h = cv2.boundingRect (cnt) cv2.rectangle (img, (x, y), (x + w, y + h), (0,255,0), 2) @endcode
Отже, здається, що limitingRect просто знаходить мінімальні та максимальні координати вхідного набору точок
PS Вибачте за мій поганий англійський