【发布时间】:2019-08-05 14:35:51
【问题描述】:
我需要将图像转换为仅由 0 和 1 组成的文本或图像。有没有办法以编程方式执行此操作,最好是在 Python 上?
这是我的尝试:
第一步:打开图片:
from PIL import Image
srcImage = Image.open("src.jpg")
第 2 步: 灰度图像:
grayImage = srcImage.convert('L')
第三步:二值化图片:
binarizedImage = grayImage.point(lambda x: 0 if x<128 else 255, '1')
现在,我坚持将黑点转换为 1,将白点转换为 0,并将其保存到文本文件中,图像高度转换为行(在本例中:174 像素到 174 行),图像宽度转换为文本长度(在这个例子中:310 像素到 310 个字符长度)或更大的图像,用 0 代替白点,用 1 代替黑点。
对这两种情况的解决方案将不胜感激。
完整的二值化代码(binarizing的PIL方式的修改版):
from PIL import Image
srcImage = Image.open("src.jpg")
grayImage = srcImage.convert('L')
binarizedImage = grayImage.point(lambda x: 0 if x<128 else 255, '1')
binarizedImage.save("binarized.png")
【问题讨论】:
-
您可以使用
numpy.array(image)将图像从PIL.Image转换为numpy.array,然后使用apply_over_axes 应用您的lambda(如果要将其重新转换为图像,here's a nice way to do it )(如果这对你有帮助,我可以从这条评论中回复帖子) -
谢谢,我会检查这个以确保它是否有效。如果您将其发布为答案,我会很高兴,以便我可以接受,以便其他人更容易找到类似情况的解决方案。
标签: python image text binary python-imaging-library