Ejemplo:
Tenemos el primer pixel de la IMG1 y IMG2 en su primer posición con los siguientes valores.
IMG1[0][0] = (250,250,250)
IMG2[0][0] = (255,255,255)
el primer valor representa RED entonces sumamos ambos valores que representan red y los dividimos entre 2.
250+255= 505
505/2 = 252.5
como el resultado es un valor con decimal necesitamos tomar su valor absoluto (redondear) y así ir realizando las operaciones e ingresando los valores en una nueva matriz la cual será el resultado de la operación.
def suma(img1,img2,dim):
suma = Image.new('RGB',dim) # se crea variable de imagen
i = 0
while i < img1.size[0]:
j = 0
while j < img1.size[1]:
r, g, b = img1.getpixel((i,j)) # se extrae los valores del pixel
rs, gs, bs = img2.getpixel((i,j)) # se extrae los valores del pixel
rr = int( (r + rs) / 2 ) # se suman los valores de R
gg = int( (g + gs) / 2 ) # se suman los valores de G
bb = int( (g + gs) / 2 ) # se suman los valores de B
pixel = tuple([rr,gg,bb]) # se asignan los valores el RGB a un pixel
suma.putpixel((i,j),pixel) # se asigna el pixel a la imagen
j+=1
i+=1
suma.show() #se muestra la imagen
def resta(img1,img2,dim):
resta = Image.new('RGB',dim) # se crea variable de imagen
i = 0
while i < img1.size[0]:
j = 0
while j < img1.size[1]:
r, g, b = img1.getpixel((i,j)) # se extrae los valores del pixel
rs, gs, bs = img2.getpixel((i,j)) # se extrae los valores del pixel
rr = int( (r - rs) / 2 ) # se suman los valores de R
gg = int( (g - gs) / 2 ) # se suman los valores de G
bb = int( (g - gs) / 2 ) # se suman los valores de B
pixel = tuple([rr,gg,bb]) # se asignan los valores el RGB a un pixel
resta.putpixel((i,j),pixel) # se asigna el pixel a la imagen
j+=1
i+=1
resta.show() #se muestra la imagen
# Se cargan las imagenes
A=Image.open('C:/Users/notblu/Documents/Python/practica4/1.png')
B=Image.open('C:/Users/notblu/Documents/Python/practica4/2.png')
C=Image.open('C:/Users/notblu/Documents/Python/practica4/3.png')
dimensiones = A.size # se extrae la dimension de una imagen
suma(A,B,dimensiones) # A + B
resta(A,B,dimensiones) # A - B
resta(B,A,dimensiones) # B - A
EJECUCIÓN
DESCARGA
Hola, no entiendo muy bien la variable dim, que significa?
ResponderEliminarSaludos.