pasar imagen a unos y ceros

Agrupa todas las consultas sobre los lenguajes de programacion como C, C++, Python, Java ...

pasar imagen a unos y ceros

Notapor xulubkisin » Mar Ago 07, 2012 3:55 pm

bueno señores, mi duda es la siguiente, quisiera saber si es posible pasar una imagen de preferencia en formato png, la imagen solo tiene color negro, y lo demas en transparente. o pues si no se puede asi, seria en una imagen con fondo blanco, para pasarla a "1" y "0" en python, ya sea cargandola en una matriz o para sacarla en un txt, la cosa seria que cualquier valor por ensima de "0" sea tomado como "1". muchas gracias al que pueda ayudarme.
y pues cual seria el metodo o procedimiento para hacer esto.
xulubkisin
 
Mensajes: 8
Registrado: Vie Jun 19, 2009 3:46 pm

Re: pasar imagen a unos y ceros

Notapor Barajas » Jue Ago 09, 2012 3:08 am

Bueno, hay un procedimiento, aun que lo considero muy "tosco", pero es el mas simple.

Para empezar, ¿Para que transformar la imagen en una matriz, si por definición, las imágenes son matrices bidimensionales? :).

Aquí en pseudocódigo:

imagen = cargar_la_imagen()
for(x=0, x < ancho_imagen, x++)
for(y=0, y < alto_imagen, y++)
//recorremos pixel por pixel de la imagen...
color = dame_color_del_pixel_en(imagen, x,y)
if color es negro:
imprimimos a pantalla o archivo "0"
else:
imprimimos a pantalla o archivo "1"


Si utilizas SDL, para obtener el color de un determinado pixel de la imagen se utiliza la función "getpixel" (aquí esta la api: http://www.libsdl.org/cgi/docwiki.cgi/Pixel_Access)

Si utilizas Pygame, es con el método Surface.get_at() (aquí esta el uso: http://www.pygame.org/docs/ref/surface.html#Surface.get_at )

Espero que te sirva :)
( hubiera contestado antes, pero he estado ocupado :roll: )
Vi veri universum vivus vici
Avatar de Usuario
Barajas
 
Mensajes: 209
Registrado: Mar Nov 16, 2010 12:06 am

Re: pasar imagen a unos y ceros

Notapor xulubkisin » Jue Ago 09, 2012 3:11 pm

hermano muchas gracias por la respuesta, me voy a poner a mirar el codigo a ver. gracias

pues hermano, ahorita revisando e intentando hacerlo, no me da, lo intento con surface.get_at, pero me dice que "surface" no esta definido
sera que vos me podes esplicar bien el codigo como a un niño de primaria, es que se me hace dificil, por que apenas estoy aprendiendo a usar
el python. desde ya muchas gracias
xulubkisin
 
Mensajes: 8
Registrado: Vie Jun 19, 2009 3:46 pm

Re: pasar imagen a unos y ceros

Notapor Barajas » Vie Ago 10, 2012 12:37 am

xulubkisin escribió:"surface" no esta definido
eso es porque surface es un tipo de dato, como entero o flotante, pero que lo define pygame... :)

bueno, aquí esta el código que hace eso... pero enserio practica un poco más Python :)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pygame
from pygame import *

#este programa importa una imagen y la trasforma en 0 y 1.
#inicializamos
pygame.init()
pygame.display.init()

screen = pygame.display.set_mode((300,300))

#cargamos la imagen... yo utilizo una que tenia llamada "OK.png", remplazalo :)
imagen = pygame.image.load("Ok.png").convert_alpha()

#obtenemos el ancho y el alto...
ancho = imagen.get_width()
alto = imagen.get_height()

#creamos una lista de "tonos negros" o oscuros...
tonos_negros = []
for i in xrange(101):
tonos_negros.append( (i,i,i) )

#creamos el archivo...
archivo = open("imagen_01.txt", "w")

#una cadena donde guardaremos los 1 y 0...
cadena = ""

#recorremos la imagen...
for y in xrange(alto):
for x in xrange(ancho):
#tomamos el color del pixel
color = imagen.get_at((x, y))
#si el color esta en los tonos negros...
if color in tonos_negros:
cadena+="0"
#si es un tono "claro"
else:
cadena+="1"
cadena+="\n"
#y escribimos la cadena al archivo...
archivo.write(cadena)
#limpiamos la cadena para empezar de nuevo...
cadena = ""

#cerramos todos y nos vamos
archivo.close()
pygame.quit()
Vi veri universum vivus vici
Avatar de Usuario
Barajas
 
Mensajes: 209
Registrado: Mar Nov 16, 2010 12:06 am


Volver a Sobre lenguajes de programación

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados

cron