2012-05-05 26 views
8

Al hacer mi tarea, tropecé con un problema relacionado con Python y la manipulación de imágenes. Debo decir que el uso de Image lib no es una opción. Así que aquí está¿Cómo crear una imagen en blanco en Python?

from scipy.misc import imread,imsave 
from numpy import zeros 

imga = zeros([100,100,3]) 
h = len(imga) 
w = len(imga[0]) 

for y in range(h): 
    for x in range(w): 
     imga[y,x] = [255,255,255] 

imsave("Result.jpg",imga) 

yo supongo que hace que mi foto en blanco, pero resulta que negro, y no tengo ni idea de por qué No se trata de un código (y sé que se ve muy feo). Es solo el hecho de que es una imagen negra.

Respuesta

16

Cada color en una imagen está representado por un byte. Por lo tanto, para crear una matriz de imágenes, debe establecer su tipo en uint8.

Y, no es necesario para el bucle para establecer cada elementos a 255, se puede utilizar de relleno() método o una rebanada índice:

import numpy as np 
img = np.zeros([100,100,3],dtype=np.uint8) 
img.fill(255) # or img[:] = 255 
+0

Ok, ya lo mencionó. ¿Cómo uso el corte combinado con las condiciones? Por ejemplo, si y <50 yx <50 quiero establecerlo en 255 de lo contrario a 0. – Gasare

3

Al crear imga, debe establecer el tipo de unidad. En concreto, cambie la siguiente línea de código:

imga = zeros([100,100,3], dtype=np.uint8) 

Y, añada lo siguiente a sus importaciones:

import numpy as np 

que da una imagen en blanco en mi máquina.

+0

Muchas gracias. Funcionó como el encanto – Gasare

+0

De nada. Como eres nuevo aquí, no olvides marcar la respuesta aceptada que más te ayudó a resolver el problema. Ver también [http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work] –

+3

Está creando una matriz de ceros. ¿Esto no le da una imagen en negro? – Megha

Cuestiones relacionadas