Как обрезать изображение вокруг коробки в Python OpenCV? - PullRequest
1 голос
/ 17 апреля 2019

Я работаю над программой для обрезки изображения вокруг прямоугольника в OpenCV.Как я мог пойти сделать это.Мне также нужно, чтобы он мог превратить несколько прямоугольников в обрезанные изображения.

Я пробовал использовать этот урок: https://www.pyimagesearch.com/2016/02/08/opencv-shape-detection/,, но я не знаю, как получить границы формы и обрезать вокругэто.

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

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

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

Вот метод, который я использую для реализации этого в Python OpenCV:

  • Отображениеизображение с использованием функции cv2.imshow() OpenCV.
  • Выберите 2 точки (x, y) на изображении.Это может быть сделано путем захвата событий щелчка мыши с OpenCV.Один из способов сделать это - щелкнуть мышью там, где находится первая точка, продолжая нажимать, чтобы перейти ко вторым точкам, и отпустить щелчок мыши, как только курсор окажется над правильной точкой.Это выбирает 2 балла для вас.В OpenCV вы можете сделать это с cv2.EVENT_LBUTTONDOWN и cv2.EVENT_LBUTTONUP.Вы можете написать функцию для записи двух точек, используя события захвата мыши, и передать ее cv2.setMouseCallback().
  • Когда у вас есть 2 координаты, вы можете нарисовать прямоугольник с помощью функции cv2.rectangle() OpenCV, где выможно передать изображение, 2 точки и дополнительные параметры, такие как цвет прямоугольника для рисования.
  • Как только вы будете довольны этими результатами, вы можете обрезать результаты, используя что-то вроде этого:
image = cv2.imread("path_to_image")
cv2.setMouseCallback("image", your_callback_function)
cropped_img = image[points[0][1]:points[1][1], points[0][0]:points[1][0]]
cv2.imshow("Cropped Image", cropped_img)
cv2.waitKey(0)

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

До (исходное изображение) : before

Область интереса выделена с нарисованным вокруг нее прямоугольником : roi selected

После (обрезанное изображение) : after

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

0 голосов
/ 17 апреля 2019

Вы можете получить координаты бокса, используя функцию «BoundedRect». Затем используйте операцию нарезки, чтобы извлечь необходимую часть изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...