使用Python/PIL或类似缩小空格

use*_*643 5 python python-imaging-library

任何想法如何使用Python与PIL模块缩小选择所有?我知道这可以用Gimp实现.我正在尝试尽可能小地打包我的应用程序,GIMP安装不是欧盟的选项.

假设您有2张图片,一张是400x500,另一张是200x100.它们都是白色的,在每个图像的边界内某处有一个100x100的文本块.我要做的是自动剥离该文本周围的空白,将该100x100图像文本块加载到变量中以进行进一步的文本提取.

显然不是这么简单,所以只在整个图像上运行文本提取是行不通的!我只想查询基本过程.关于此主题,Google上没有太多可用内容.如果解决了,也许它可以帮助其他人......

谢谢阅读!

Hoo*_*ked 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)
Run Code Online (Sandbox Code Playgroud)

为了显示结果的样子,我将轴标签留在上面,以便您可以看到box区域的大小:

from pylab import *

subplot(121)
imshow(pix)
subplot(122)
imshow(region_pix)
show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 在python 3中需要添加地图:list(map(min,idx))[::-1] (2认同)