viernes, 16 de agosto de 2013

Vision. 1

Filtros de Imagenes con Python usando PIL


from sys import argv
from PIL import Image

op = argv[1]

def c_i():
    im = Image.open("h.jpg") 
    rgb = im.convert('RGB')
    i_p = im.load()
    gris(im, i_p, im.size)
    binar(None, im, rgb)
    tono()

#########Escala de Grises######################
def gris(im, pixeles, size):
    x, y = size
    for i in range(x):
        for j in range(y):
            (r, g, b) = pixeles[i, j]
            npix = (r + g + b)/3
            pixeles[i, j]= (npix, npix, npix)
    #im.show()
    im.save('escaladegrises.png', 'PNG')
################################################

#########Binarizacion###########################
def binar(umbral, im, rgb):
    if(umbral == None): umbral = 122
    for i in range(im.size[0]):
        for j in range(im.size[1]):
            r = rgb.getpixel((i, j))[0]
            g = rgb.getpixel((i, j))[1]
            b = rgb.getpixel((i, j))[2]
                
            media = (r+g+b)/3
            pixel = tuple([media, media, media])
            im.putpixel((i, j), pixel)            

            if media > umbral: media = 255
            else: media = 0

            pixel = tuple([media, media, media])
            im.putpixel((i, j), pixel)

    #im.show()       
    im.save('binario.png', 'PNG')
#################################################

###########Tonos#################################
def tono():
    im = Image.open("h.jpg")
    rgb = im.convert('RGB')
    i_p = im.load()
    #op = "r"
    for i in range(im.size[0]):
        for j in range(im.size[1]):
            (r, g, b) = i_p[i, j]
            if (op=="r"): 
                i_p[i,j] = (r, 0, 0)
                #im.save('rojo.png', 'PNG')
            if (op=="g"): 
                i_p[i,j] = (0, g, 0)
            if (op=="b"): 
                i_p[i,j] = (0, 0, b)

    if (op=="r"): 
        im.save('rojo.png', 'PNG')
    if (op=="g"): 
        im.save('verde.png', 'PNG')   
    if (op=="b"): 
        im.save('azul.png', 'PNG')
    #im.save('tono.png', 'PNG')
##################################################

c_i()
Normal
Escala de Grises
Binarizacion
Tono Azul 
Tono Rojo 
Tono Verde