Я только недавно сделал это для одного из моих проектов, и он отлично работал.
Вот метод, который я использую для реализации этого в 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)
Вот один из результатов, которые я получаю на одном из моих изображений.
До (исходное изображение) :
Область интереса выделена с нарисованным вокруг нее прямоугольником :
После (обрезанное изображение) :
Я начал с того, что следовал этому прекрасному учебнику о том, как его реализовать, прежде чем сам совершенствовать его, поэтому вы можете начать здесь: Захват событий щелчка мыши с помощью Pythonи OpenCV .Вам также следует прочитать комментарии внизу прилагаемого руководства, чтобы легко улучшить код.