在给定车牌边界框的坐标的情况下,我需要使用python从汽车图像中裁剪车牌。 (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)
谢谢。
答案 0 :(得分:1)
如果要裁剪板,可以在OpenCV中执行以下操作
import cv2
img = cv2.imread("image.png")
cropped__img = img[y1:y2, x1:x2]
也在这里回答: How to crop an image in OpenCV using Python
或将像素的颜色更改为白色或黑色(或任何其他颜色)。
import cv2
img = cv2.imread("image.png")
img[y1:y2, x1:x2] = [255,255,255]
答案 1 :(得分:0)
由于获得的坐标是多边形而不是矩形,因此您必须在切片时进行一些调整,最简单的方法是调整矩形:
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]