【发布时间】:2020-04-26 08:48:03
【问题描述】:
这是我使用 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,这些是图片[1638,1462,2974,1462,2974,1549,1638,1549] 的 b-box 坐标。
【问题讨论】:
-
如果您在左侧裁剪了 25 个像素,则从所有
X值中减去 25 个像素。与顶级作物和Y值类似。 -
@furas 我已经裁剪了
25:4314那么右侧的 4314 呢? -
右下角裁剪多少像素并不重要。
标签: python python-3.x opencv ocr image-preprocessing