Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 17, 2023 17:09:38

SandStormTT
Зарегистрирован: 2023-08-17
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Конвертация частей изображения в текст и его обработка.

Привет всем, у меня есть изображение 600 на 600.
В нём есть части размером 10 на 10.
Ну то есть если считать по этим частям, то изображение 60 на 60 таких частей.
Нужно конвертировать это всё в текст, где определённая часть(их 6 видов и они хранятся в файлах ПНГ) кодируется символом. И всё это нужно разнести на строки и добавить в начале и конце каждой ,“.
В итоге получится что то такое:

,”WWWWllll…….RRRRR………………,“
,”RRR…….CCCCCCCCCCCCC………..,"
И так далее(тут передал не точно).

Какие для всего это нужны библиотеки/модули итд?

Офлайн

#2 Авг. 17, 2023 18:36:34

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9863
Репутация: +  853  -
Профиль   Отправить e-mail  

Конвертация частей изображения в текст и его обработка.

SandStormTT
Нужно конвертировать это всё в текст
Как ты будешь конвертировать в текст эту одну картинку 60x60? Сравнивать с шаблонной картинкой напрямую будешь или что?

Если у тебя прямое сравнение, то нужно будет сделать нарезку большого изображения с помощью модуля PIL (или его форка) и сразу сделать хеш-суммы для содержимого этих изображений (без сохранения этих изображений в отдельные файлы - прямо в оперативной памяти можно с ними работать). Эти хеш-суммы сразу сохраняются в список списков (двумерный массив). И потом тебе нужно будет загрузить 6 видов шаблонов, с которыми ты будешь сравнивать и сделать их хеш-суммы и поместить их в словарь вида {хеш-сумма -> символ, хеш-сумма -> символ, …, хеш-сумма -> символ}. И дальше ты двумерный массив этот из хеш-сумм нарезок прогоняешь через этот словарь и получаешь символы. И уже после этого ты к полученным строкам добавляешь там дополнительные символы (строки) по бокам.

SandStormTT
Какие для всего это нужны библиотеки/модули итд?
Модуль PIL, модуль hashlib, класс list, класс dict, класс str.

  
>>> import PIL.Image
>>> 
>>> image = PIL.Image.open('math_sum.png')
>>> 
>>> import hashlib
>>> 
>>> hashlib.md5(image.tobytes()).hexdigest()
'd4acc355322334d85a814e8af4fed3ff'
>>>
>>> image.tobytes()[100000:100000+300]
b'\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\xed\xed\xff\xaa\xaa\xaa\xff\xaa\xaa\xaa\xff\xa2\xa2\xa2\xff\x91\x91\x91\xffPPP\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x0f\x0f\x0f\xffkkk\xff\x98\x98\x98\xff\xa8\xa8\xa8\xff\xaa\xaa\xaa\xff\xb2\xb2\xb2\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff'
>>>
>>> pic = image.crop((0, 0, 20, 10))  
>>> pic
<PIL.Image.Image image mode=RGBA size=20x10 at 0x7F32A8847278>
>>>
>>> hashlib.md5(pic.tobytes()).hexdigest()
'dbb1b385986380706b393137401c19c4'
>>> 
>>> image.close()
>>>



Отредактировано py.user.next (Авг. 17, 2023 18:49:32)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version