Я импортирую изображение из видеокадра, используя cv2.resize (), чтобы увеличить изображение в 4 раза, а затем использую обнаружение краев Canny, чтобы помочь удалить шум перед отслеживанием объекта.Однако обнаружение края Canny продолжало давать мне черное изображение.
После долгих испытаний я обнаружил, что использование cv2.resize () для уменьшения размера изображения до 1/4, прежде чем обнаружение края Canny дало мне результат, на который я надеялся,Уменьшение размера изображения до 1/3 также дало мне гораздо лучший результат, но с меньшими краями, чем уменьшение 1/4, а уменьшение масштаба до 1/16 дало больше краев, чем до 1/4.Почему это происходит?На самом деле, когда я писал этот вопрос, я изменял размеры немасштабированного результата и обнаружил, что вызовы namedWindow и cv.WINDOW_NORMAL также улучшили его.
Я понимаю, что могу просто изменить масштаб, запустить обнаружение Canny, а затем увеличить результатОбнаружение ловких краев и слежение за моими объектами, но это сбивает меня с толку, и знание того, почему это происходит, было бы интересно для меня, и я думаю также для других.Ничто из того, что я мог найти в документации opencv, не предполагало зависимости алгоритма Канни от размера изображения.
См. Изображения ниже, все они генерируются с помощью output = cv2.Canny (input, 30, 50):
Немасштабированный (улучшено с помощью cv.WINDOW_NORMAL) https://i.imgur.com/uG93Dhd.png
1/4 Уменьшено до обнаружения Canny https://i.imgur.com/dQP9bxB.png
1/3 Уменьшено до обнаружения Canny https://i.imgur.com/MkSpaT5.png
1/16 уменьшено до обнаружения Canny https://i.imgur.com/SbpPkYP.png