我需要将图像转换为仅包含0和1的文本或图像。有什么方法可以通过编程的方式做到这一点,最好是在Python上?
这是我的尝试:
步骤1:打开图像:
from PIL import Image
srcImage = Image.open("src.jpg")
第2步:灰度图像:
grayImage = srcImage.convert('L')
第3步:将图像二值化:
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")
答案 0 :(得分:1)
您可以为此使用numpy库
from PIL import Image
from scipy.ndimage import zoom
import numpy as np
srcImage = Image.open("src.jpg")
grayImage = col.convert('L')
array = np.array(grayImage)
array = zoom(array, 310/174)
np.savetxt("binarized.txt", array<128, fmt="%d")
np.array
将PIL图像转换为numpy数组格式,以给定比例缩放插值数组,array < 128
创建二进制数组,fmt="%d"
设置结果将保存为整数