Обрезка изображения с использованием обнаружения хитрых краев

Я сгенерировал края с помощью детектора краев Canny, теперь хочу обрезать исходное изображение по этим краям.

Есть ли способ получить.

  1. Левое и верхнее расположение 255 пикселя изображения.
  2. Правое и верхнее расположение 255 пикселя изображения.
  3. Левое и нижнее расположение 255 пикселя изображения.
  4. Правое и нижнее расположение 255 пикселя изображения.

И обрежьте это изображение на основе этого местоположения. Используя open cv или любую другую библиотеку, использующую python.


person Shan Khan    schedule 04.09.2018    source источник
comment
cv2.findNonZero и cv2.boundingRect на результат.   -  person Dan Mašek    schedule 04.09.2018
comment
Если пиксель [1,2] и [2,1] оба белые, какой из них левый и самый верхний?   -  person Mark Setchell    schedule 05.09.2018
comment
Что-то вроде этого stackoverflow.com /вопросы/34981144/?   -  person Kinght 金    schedule 06.09.2018
comment
@Silencer Да, пожалуйста, отметьте это как дубликат. Я также отметил   -  person Shan Khan    schedule 06.09.2018


Ответы (1)


Могут быть лучшие решения, но я думаю, вы можете реализовать алгоритм.

Начните с рисования квадрата, который ПОЛНОСТЬЮ захватывает дочерний набор пикселей. Затем медленно сдвигайте стороны по одной, пока они не столкнутся с 255 пикселем. Как только вы полностью вытянете все 4 стороны, у вас будет нужная область для обрезки.

Вы также можете использовать четыре простых (однострочных) цикла For для проверки "первого белого пикселя". Поскольку пиксели x-pos начинаются сверху/слева, используйте x++ для проверки вперед и x-- для проверки назад (с правой стороны).

person Nick Dima    schedule 04.09.2018