Рисование прямоугольников на изображениях с помощью OpenCV: подробное руководство

Чтобы нарисовать прямоугольник на изображении с помощью OpenCV, вы можете использовать несколько разных методов. Вот несколько подходов:

  1. Метод 1: функция прямоугольника OpenCV
    Используйте встроенную функцию rectangleOpenCV, чтобы нарисовать прямоугольник на изображении. Этот метод требует указания координат верхнего левого и нижнего правого углов прямоугольника.

    Пример кода:

    import cv2
    image = cv2.imread('input_image.jpg')
    cv2.rectangle(image, (x1, y1), (x2, y2), (255, 0, 0), 2)
    cv2.imshow('Image with Rectangle', image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
  2. Метод 2: манипуляции с массивом Numpy
    Вы также можете использовать манипуляции с массивом Numpy, чтобы нарисовать прямоугольник на изображении. Этот метод предполагает изменение значений пикселей в указанной области для создания прямоугольника.

    Пример кода:

    import cv2
    import numpy as np
    image = cv2.imread('input_image.jpg')
    cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), -1)
    cv2.imshow('Image with Rectangle', image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
  3. Метод 3: PIL (библиотека изображений Python)
    Если вы предпочитаете работать с PIL, вы можете преобразовать изображение в объект изображения PIL и использовать модуль ImageDrawдля рисования прямоугольник на изображении.

    Пример кода:

    from PIL import Image, ImageDraw
    image = Image.open('input_image.jpg')
    draw = ImageDraw.Draw(image)
    draw.rectangle([(x1, y1), (x2, y2)], outline='red', width=2)
    image.show()
  4. Метод 4: OpenCV с прозрачностью
    Если вы хотите нарисовать прямоугольник с прозрачностью, вы можете создать отдельное изображение с альфа-каналом и наложить его на исходное изображение.

    Пример кода:

    import cv2
    import numpy as np
    image = cv2.imread('input_image.jpg')
    overlay = image.copy()
    cv2.rectangle(overlay, (x1, y1), (x2, y2), (0, 0, 255, 128), -1)
    cv2.addWeighted(overlay, 0.5, image, 0.5, 0, image)
    cv2.imshow('Image with Rectangle', image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()