2012-05-05 85 views
8

Khi làm bài tập về nhà, tôi tình cờ gặp một vấn đề liên quan đến thao tác Python và hình ảnh. Tôi phải nói, bằng cách sử dụng hình ảnh lib không phải là một lựa chọn. Vì vậy, ở đây nó làLàm thế nào để tạo ra một hình ảnh màu trắng trong 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) 

tôi sẽ giả định nó làm cho hình ảnh của tôi trắng, nhưng nó biến nó màu đen, và tôi không có ý tưởng tại sao Nó không phải về mã (và tôi biết nó trông rất xấu xí). Nó chỉ là về một thực tế, rằng nó là một hình ảnh màu đen.

Trả lời

16

Mọi màu trong hình ảnh được biểu thị bằng một byte. Vì vậy, để tạo một mảng hình ảnh, bạn nên đặt dtype thành uint8.

Và, bạn không cần phải cho vòng lặp để thiết lập tất cả các yếu tố đến 255, bạn có thể sử dụng fill() phương pháp hoặc lát index:

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

Ok kể từ khi bạn đề cập đến điều đó. Làm cách nào để sử dụng kết hợp cắt với điều kiện. Ví dụ: nếu y <50 và x <50, tôi muốn đặt thành 255 hoặc 0. – Gasare

3

Khi tạo imga, bạn cần đặt loại đơn vị. Cụ thể, thay đổi dòng mã sau đây:

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

Và, thêm dòng sau vào nhập khẩu của bạn:

import numpy as np 

Điều đó mang lại một hình ảnh trắng trên máy tính của tôi.

+0

Thank you very much. Làm việc như quyến rũ – Gasare

+0

Bạn được chào đón. Vì bạn là người mới ở đây, xin đừng quên đánh dấu câu trả lời được chấp nhận giúp đỡ nhiều nhất trong việc giải quyết vấn đề. Xem thêm [http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work] –

+3

Bạn đang tạo một mảng số không.Điều này có cho bạn một hình ảnh đen không? – Megha

Các vấn đề liên quan