加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

使用python和PIL如何获取图像中的文本块?

发布时间:2020-12-20 12:19:34 所属栏目:Python 来源:网络整理
导读:我有一个图像(* .png),其中包含两个文本块.我试图使用 python27中的 python映像库(PIL)单独获取每个文本块. 我试图模糊图像,然后找到模糊块的边缘,以便我可以恢复每个块的边界(稍后用于“裁剪”).然而,当我模糊图像(我已经尝试了几次迭代)时,“find_edges”
我有一个图像(* .png),其中包含两个文本块.我试图使用 python27中的 python映像库(PIL)单独获取每个文本块.

我试图模糊图像,然后找到模糊块的边缘,以便我可以恢复每个块的边界(稍后用于“裁剪”).然而,当我模糊图像(我已经尝试了几次迭代)时,“find_edges”过滤器似乎只是抓住每个角色的边缘.

pic = Image.open("a.jpg")
out = pic.filter(ImageFilter.BLUR)
out = out.filter(ImageFilter.FIND_EDGES)

我想我正在寻找类似于photoshop“磁性套索工具”的东西任何想法哪种方法可能更好?

解决方法

我首先制作投影到一个轴上的图像的直方图.拍摄您的图像,crop to the outer bounding box first.投影直方图到y轴的示例:

from PIL import Image
import numpy as np

im = Image.open("dummytext.png")
pix = np.asarray(im)
pix = pix[:,:,0:3] # Drop the alpha channel
pix = 255 - pix  # Invert the image
H =  pix.sum(axis=2).sum(axis=1) # Sum the colors,then the y-axis

从这里,确定最大的空白区块.这决定了要分割的最佳y坐标.注意在上面的直方图中它是如何显而易见的.如果两个文本块更接近,则需要更好的标准,只需调整方法以满足您的需求.分割后,您可以单独裁剪图像.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读