我正在嘗試轉換二進制格式的 8×8 numpy 陣列(0 代表黑色,1 代表白色)。這就是我運行的:
from PIL import Image
data = im.fromarray(array) # array is an 8*8 binary numpy
data.save('dummy_pic.png')
但在輸出中我得到一個全黑的正方形。任何人都可以幫我一把嗎?
uj5u.com熱心網友回復:
黑色方塊可能是很深的灰色,因為你可能有np.array資料uint8型別,它的范圍是 0-255,而不是像二進制陣列那樣的 0-1。嘗試將陣列資料型別更改為bool,或將值縮放到 0-255 范圍。
這是生成和顯示二進制陣列的代碼片段。如果按較小的值縮放,圓圈會變得稍微暗一些。
from PIL import Image
import numpy as np
# Generating binary array which represents circle
radius = 0.9
size = 100
x,y = np.meshgrid(np.linspace(-1,1,size),np.linspace(-1,1,size))
f = np.vectorize(lambda x,y: ( 1.0 if x*x y*y < radius*radius else 0.0))
array = f(x,y)
# Solution 1:
# convert np.array to bool datatype
array = (array).astype(np.bool)
# Solution 2:
# scale values to uint8 maximum 255
array = ((array) * 255).astype(np.uint8)
img = Image.fromarray(array)
display(img)
結果:白色圓圈
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/514730.html
下一篇:影像圖示損壞的問題
