任何想法如何使用Python与PIL模块缩小选择全部?我知道这可以通过Gimp实现。我正在尝试尽可能小地打包我的应用程序,GIMP安装不是欧盟的选项。
假设您有2张图片,一张是400x500,另一张是200x100。它们都是白色的,在每个图像的边界内某处有一个100x100的文本块。我要做的是自动剥离该文本周围的空白,将该100x100图像文本块加载到变量中以进行进一步的文本提取。
显然不是这么简单,所以只在整个图像上运行文本提取是行不通的!我只想查询基本过程。关于此主题,Google上没有太多可用内容。如果解决了,也许它可以帮助其他人......
感谢阅读!
答案 0 :(得分:8)
如果将图像放入numpy
数组,则可以轻松找到可以使用PIL进行裁剪的边缘。在这里,我假设空白是颜色(255,255,255)
,您可以根据自己的需要进行调整:
from PIL import Image
import numpy as np
im = Image.open("test.png")
pix = np.asarray(im)
pix = pix[:,:,0:3] # Drop the alpha channel
idx = np.where(pix-255)[0:2] # Drop the color when finding edges
box = map(min,idx)[::-1] + map(max,idx)[::-1]
region = im.crop(box)
region_pix = np.asarray(region)
要显示结果的样子,我已经打开了轴标签,以便您可以看到box
区域的大小:
from pylab import *
subplot(121)
imshow(pix)
subplot(122)
imshow(region_pix)
show()
答案 1 :(得分:1)
一般算法是找到左上角像素的颜色,然后向内进行螺旋扫描,直到找到不是该颜色的像素。这将定义边界框的一个边缘。继续扫描,直到你再击中每个边缘。
答案 2 :(得分:0)
http://blog.damiles.com/2008/11/basic-ocr-in-opencv/
可能会有所帮助。您可以使用该教程中描述的简单边界框方法或@Tyler Eaves螺旋建议同样适用