Я пытаюсь обнаружить блокировку без остановки, которая имеет форму примерно такой, как показано ниже (этот снимок сделан и очищен после применения детектора края), но могу изменить его размер (иногда он шире по длине, иногда на вдохе). У всех одинаковый узор и похоже на коробку. Я попытался использовать findcontour, а также детектор линии hough line, чтобы обнаружить его.
однако результат кажется не очень хорошим, главным образом потому, что нижняя часть коробки не закрыта (это произошло, когда коробка достигла определенной длины)
Ищу предложение
Некоторые из других идей у меня есть 1) Найдите точки пересечения и определите, находится ли пересечение под углом 90 градусов. 2) посмотрите на момент HU и используйте шаблонное изображение изображения для сравнения
С уважением
Если ваши отфильтрованные данные всегда такие чистые, вы можете посмотреть вычисление ориентированных ограничивающих рамок с cv::minAreaRect
. cv::boundingRect
также может работать, хотя, похоже, он дает только вертикальные ограничивающие прямоугольники, а не ориентированные. Вот учебник для ориентированных ограничивающих рамок opencv.
До этого я использовал расширение морфологии (размер 5x5), чтобы соединить ломаную линию и заполнить пустоту.
Спасибо за ответ. На самом деле не работает. правый край изображения состоит из двойной параллельной линии (хотя левый должен быть по праву параллельной линией, в данном случае она не отображается). При использовании cv :: minAreaRect он заключил в рамки левый и правый края, но не всю фигуру (с x-образным).