Я использую OpenCV, чтобы найти прямоугольники в изображении в градациях серого.
Сначала я вырезал изображение глубины из верхней части окна, как показано ниже:
Затем я вырезал изображение глубины из нижней части окна, как показано ниже:
После некоторой фильтрации, закрытия и выполнения некоторых основных операций я получаюизображение верхнего разреза, объединенное с тем, где находятся днища ящиков вместе с ограничивающими ящиками. Пожалуйста, смотрите изображение ниже:
Теперь цель состоит в том, чтобы попытаться растянуть внутренние прямоугольники, пока они не коснутся углов верхнего края. Проблема заключается в том, что ящики можно вращать, что делает заполнение намного сложнее, чем просто зацикливание по горизонтали / вертикали и заполнение пробелов.
Подход заключается в получении стороны внутреннего прямоугольника, продолжайте перемещать его в направлениирастяжение до тех пор, пока оно не коснется некоторых пикселей со значением 255. Однако это занимает много времени и неэффективно.
Другой подход заключается в устранении всех пикселей, которые не расположены вдоль направления растяжения сегмента, нахожденияконтуры оставшихся объектов и попытка того же метода.
Третий подход и тот, который имеет для меня наибольшее значение:
- Нарисуйте 2 других сегмента, связанных со сторонойпрямоугольник, но в виде линий, чтобы заполнить все изображение.
- Все, что находится за пределами 2 строк игнорируется
- Найти получить список координат контуров оставшихся объектов в направлении растяжения /заливка
- Найти ближайший пиксель в сторону;это то место, где мы растянем рамку. Это все еще довольно неэффективно.
Любая помощь, руководство или идеи будут высоко оценены. Спасибо!