Как обрезать изображение, учитывая координаты четырех углов, чтобы обрезать - PullRequest
0 голосов
/ 26 февраля 2019

Мне нужно вырезать номерной знак из изображения автомобиля с помощью питона, учитывая координаты ограничивающих рамок номерного знака.(4 координаты).Любые советы о том, как я мог это сделать?

У меня есть следующий код, но он не работает должным образом.

> x1, y1: 1112 711 
> x2, y2: 1328 698 
> x3, y3: 1330 749 
> x4, y4: 1115 761
image = cv2.imread(IMAGE_PATH)
fixed_image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)

new_img = cv2.rectangle(fixed_image, (x3,y3), (x1,y1), (0, 255, 0), 5) 

plt.figure(figsize=(12,13))
plt.imshow(new_img)

Изображение для справки

Обрезанное изображение

Спасибо.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

, поскольку получаемые вами координаты - это ПОЛИГОН, а не прямоугольник, вам придется внести некоторые коррективы в нарезку, проще всего это настроить прямоугольник:

x1, y1: 1112 711
x2, y2: 1328 698
x3, y3: 1330 749
x4, y4: 1115 761

top_left_x = min([x1,x2,x3,x4])
top_left_y = min([y1,y2,y3,y4])
bot_right_x = max([x1,x2,x3,x4])
bot_right_y = max([y1,y2,y3,y4])

теперь вы можете сделать

img[top_left_y:bot_right_y, top_left_x:bot_right_x]

обратите внимание, что нарезка НЕ ​​включает конечную точку, поэтому вы можете сделать

img[top_left_y:bot_right_y+1, top_left_x:bot_right_x+1]
0 голосов
/ 26 февраля 2019

В OpenCV вы можете сделать следующее, если хотите обрезать тарелку

import cv2
img = cv2.imread("image.png")
cropped__img = img[y1:y2, x1:x2]

Также ответили здесь: Как обрезать изображение в OpenCV с помощью Python

Или измените цвет пикселей на белый или черный (или любой другой цвет).

import cv2
img = cv2.imread("image.png")
img[y1:y2, x1:x2] = [255,255,255]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...