Imagen a texto PIL+python
24 Mar 2009 | Escrito por: lopz | En: Python
Imagen a texto PIL+python
Hola, el otro día estaba jugando con una librería para el tratamiento de imágenes en python, la cual se llama PIL, la verdad es que hasta donde he visto es fácil tratar las imágenes, aplicar filtros, etc, y bueno, para meterme algo más a fondo hice un pequeño script que toma de entrada una imágen en formato JPG o PNG, y que contenga algo, en este caso un número, que es el 1.
Estoy usando una imágen en blanco y negro para que haya resultado más fácil, si no, se habría tenido que limpiar el ruido del fondo de la imágen, etc, ya para eso hacíamos un captcha break hehe.
Y bueno, como les decía, abre la imágen, la procesa, y el final te imprime en pantalla el número de la imágen pero con ceros y unos, cada pixel representaría un número, si es de baja luminosidad pones un 0, y si no, un 1, entonces el resultado quedaría de la siguiente forma, y como dicen, una imagen vale más que mil palabras
La imágen antes de ser tratada con script en python

Y este es el resultado.

y bueno, se podría hacer un sistema de reconocimiento de caracteres en python usanro PIL, mapas de bits, y jugar con redes neuronales, en esto último me tengo que poner.
Espero que les haya servido de ejemplo y cualquier duda o comentarios dejar un comment y trataré de responder.
Aquí el código de script.
Code:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
#
# PyImg2Text.py
#
# Copyright 2009 Jorge J. Lopez C. <lowlifebob[arroba]gmail.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.
# Import library
import Image
__program__ = "PyImg2Text"
__author__ = "Jorge J. López C."
__version__ = "0.1"
im = Image.open("1.jpg")
x, y = im.size
def procImgRGB(im):
im_pxls = tuple(im.getdata())
resp = []
for i in range(len(im_pxls)):
r = im_pxls[i][0]
g = im_pxls[i][1]
b = im_pxls[i][2]
if ((r + g + b) / 3) < 50:
resp.append(1)
else:
resp.append(0)
return resp
matrix = procImgRGB(im)
def make_list(flist, long):
i = j = 0
list_ = []
while j < flist.__len__():
j += long
list_.append(flist[i:j])
i = j
return list_
matrixImg = make_list(matrix, x)
for i in matrixImg:
print str(i).replace(", ", "")
Ya no hay necesidad de decirles que copien y peguen esto en un fichero y luego python script.py, por que supongo que el que quiera probar este script ya estará al menos familiarizado con este lenguaje.
Saludos!
|