这是我得到的收据图像,我使用 matplotlib 绘制了它,
# x1, y1, x2, y2, x3, y3, x4, y4
bbox_coords = [[650, 850], [1040, 850], [1040, 930], [650, 930]]
image = cv2.imread(IMG_FILE)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
fig, ax = plt.subplots(figsize=(20, 20))
ax.imshow(gray, cmap='Greys_r');
rect = Polygon(bbox_coords, fill=False, linewidth=1, edgecolor='r')
ax.add_patch(rect)
plt.show()
print(gray.shape)
(4376, 2885)
然后,我裁剪了原始的灰色图像并使用相同的边界框坐标再次绘制它,这是结果,
# cropped the original image
gray_new = gray[25:4314, 147:2880]
fig, ax = plt.subplots(figsize=(20, 20))
ax.imshow(gray_new, cmap='Greys_r');
rect = Polygon(bbox_coords, fill=False, linewidth=1, edgecolor='r')
ax.add_patch(rect)
plt.show()
print(gray_new.shape)
(4289, 2733)
所以,我正在寻找一种方法来制作边界框以适应裁剪后的图像。我不知道如何实现它。
编辑:
如果您想复制问题,这是另一个图像,receipt-2
这些是图像的 b-box 坐标[1638,1462,2974,1462,2974,1549,1638,1549]
。