Статья Автор: Деникина Наталья Владимировна

Полигональная обрезка изображений

Полигональная обрезка изображений

Полигональная обрезка — это процесс выделения и обрезки области изображения, которая имеет произвольную, часто неправильную форму, определенную полигоном.
Полигон — это многоугольник, который может иметь любое количество сторон.

В контексте обработки изображений полигональная обрезка позволяет выделить определенные участки изображения, которые не обязательно ограничены прямоугольной рамкой.

  • Прямоугольная обрезка: ограничивает выделение области прямоугольной или квадратной формой. Подходит для задач, где объект имеет прямые углы или когда не требуется точное выделение.
  • Полигональная обрезка: позволяет выделять объекты любой формы, что делает её предпочтительным выбором для изображений, где объект имеет неровные края или сложную форму.

Процесс полигональной обрезки включает следующие шаги:

  1. Определение вершин многоугольника: Вы задаете координаты точек (вершин), которые образуют многоугольник.
  2. Создание маски: Используя эти вершины, создается маска, которая выделяет внутреннюю область многоугольника.
  3. Применение маски к изображению: С помощью битовых операций эта маска применяется к изображению, оставляя видимыми только области внутри многоугольника.


  • Определение вершин полигональной области:

    polygon = np.array([[1024, 512], [768, 955], [256, 955], [0, 512], [255, 68], [768, 68]], np.int32)

    Мы задаем координаты вершин многоугольника, который будет использоваться для создания маски. В этом примере вершины образуют шестиугольник.

  • Создание маски:
    mask = np.zeros(image_cv.shape[:2], dtype=np.uint8)
    Маска создается с нулями (черный фон) того же размера, что и исходное изображение. Маска будет двухмерной (градация серого), поскольку она используется для выделения областей на изображении.

  • Заполнение маски полигональной областью:

    cv2.fillPoly(mask, [polygon], 255)

    Функция cv2.fillPoly заполняет внутреннюю часть многоугольника белым цветом (значение 255), что представляет собой область, которая останется видимой после обрезки.

  • Применение маски к изображению:

    masked_image = cv2.bitwise_and(image_cv, image_cv, mask=mask)

    С помощью функции cv2.bitwise_and маска применяется к изображению. В результате видимыми остаются только те части изображения, которые находятся внутри многоугольника.
     

Прикрепленные файлы
poligon_1.png
Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать