Python OpenCV: рисование прямоугольников с помощью мыши

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

Метод 1: использование функций обратного вызова мыши

  1. Импортируйте необходимые библиотеки:
    import cv2
    import numpy as np
  2. Создайте функцию обратного вызова мыши для обработки событий мыши:
    def draw_rectangle(event, x, y, flags, param):
    global drawing, top_left_pt, bottom_right_pt
    if event == cv2.EVENT_LBUTTONDOWN:
        drawing = True
        top_left_pt = (x, y)
    elif event == cv2.EVENT_LBUTTONUP:
        drawing = False
        bottom_right_pt = (x, y)
        cv2.rectangle(image, top_left_pt, bottom_right_pt, (0, 255, 0), 2)
        cv2.imshow('Image', image)
  3. Настройте окно и привяжите функцию обратного вызова мыши:
    image = np.zeros((512, 512, 3), np.uint8)
    cv2.namedWindow('Image')
    cv2.setMouseCallback('Image', draw_rectangle)
  4. Отобразите изображение и подождите, пока пользователь нарисует прямоугольник:
    while True:
    cv2.imshow('Image', image)
    if cv2.waitKey(1) == 27:  # Press Esc to exit
        break
    cv2.destroyAllWindows()

Метод 2: использование функции cv2.selectROI()

  1. Импортируйте необходимые библиотеки:
    import cv2
  2. Загрузить изображение:
    image = cv2.imread('image.jpg')
  3. Используйте функцию cv2.selectROI(), чтобы выбрать прямоугольник:
    rect = cv2.selectROI(image)
  4. Нарисуйте прямоугольник на изображении:
    x, y, w, h = rect
    cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
    cv2.imshow('Image', image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()