Изображение к 0,1 тексту - PullRequest
1 голос
/ 14 марта 2019

Мне нужно преобразовать изображение в текст или изображение, состоящее только из 0 и 1. Есть ли способ сделать это программно, желательно на Python?

Вот моя попытка:

Шаг 1: Открыть изображение:

from PIL import Image
srcImage = Image.open("src.jpg")

enter image description here

Шаг 2: Оттенки серого изображения:

grayImage = srcImage.convert('L')

enter image description here

Шаг 3: Бинаризация изображения:

binarizedImage = grayImage.point(lambda x: 0 if x<128 else 255, '1')

enter image description here

Теперь я застрял, конвертируя черные точки в 1, а белые - в 0, и сохраняю их в текстовый файл с высотой изображения, преобразованной в строки (в данном примере: от 174 пикселей до 174 строк) и шириной изображения, преобразованной в длину текста ( в этом примере: от 310 пикселей до 310 символов) или изображение большего размера с 0 вместо белых точек и 1 вместо черных точек.

Решение обоих случаев было бы высоко оценено.

Полный код бинаризации (модифицированная версия пути 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")

1 Ответ

1 голос
/ 14 марта 2019

Вы можете использовать библиотеку 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 в формат массива noomy, масштабировать интерполированный массив с заданным масштабом, array < 128 создать двоичный массив и fmt="%d" установить, чторезультат будет сохранен как целое число

...