如何根据背景颜色从一张图片中裁剪多个图像



所以我有一个图像,我想把它切成多个图像,输入OCR进行读取。

图像示例

我只想要带有白色气泡的消息,不包括任何带有灰色气泡的消息。我不知道如何做一个循环来分离每个白色的气泡。

import numpy as np
from PIL import ImageGrab, Image, ImageFilter
img = Image.open('test1.png').convert('RGB')
na = np.array(img)
orig = na.copy()
img = img.filter(ImageFilter.MedianFilter(3))
whiteY, whiteX = np.where(np.all(na==[255,255,255],axis=2))
top, bottom = whiteY[1], whiteY[-1]
left, right = whiteX[1], whiteX[-1]

您可以尝试使用opencv阈值函数,然后使用findContours函数。如果您正确设置图像阈值,这将为您提供上面气泡的"边界"。使用它,您可以裁剪出每个文本气泡。

下面是一个使用轮廓的简单示例:https://www.geeksforgeeks.org/find-and-draw-contours-using-opencv-python/

否则,如果您想更好地了解我提到的opencv函数或上面文章中使用的函数,请查看opencv文档。

相关内容

最新更新