我想為 512 x 512 影像創建一個包含所有像素位置的 2d numpy 陣列。這意味著會有 512 2或 262,144 個值。如果考慮 x 和 y 零點,可能會稍微多一些,但您明白了。
手動完成會pixels = np.array([[0, 1], [0, 2], [0,3], [0,4]])一直到最后。但顯然我需要自動化它。不過像素的順序并不重要。它需要采用那種“格式”,以便我可以通過 0 和 1 索引訪問像素 x 和 y 值,即pixels[0][0]第一個像素的 x 值和pixels[0][1]第一個像素的 y 值。
uj5u.com熱心網友回復:
嘗試這個:
pixels = np.array([[x, y] for y in range(512) for x in range(512)])
請注意,您可以針對不同的 x 或 y 值修改它。
uj5u.com熱心網友回復:
numpy被公開用于處理和操縱影像通過多維arrays,因為它們是非常有用的,以存盤值作為像素(rgb,rgba,greyscale等...)
示例(RGB):
>>> import numpy as np
>>> from PIL import Image
>>> array = np.zeros([100, 200, 3], dtype=np.uint8)
>>> array[:,:100] = [255, 128, 0] #Orange left side
>>> array[:,100:] = [0, 0, 255] #Blue right side
>>> img = Image.fromarray(array)
>>> array[:,:100] = [100, 128, 0]
>>> array[:,100:] = [0, 0, 200]
>>> img = Image.fromarray(array)
>>> img.save('img.png')

示例(灰度):
>>> import numpy as np
>>> from PIL import Image
>>> array = np.zeros([100, 200], dtype=np.uint8)
>>> # Set grey value to black or white depending on x position
>>> for x in range(200):
>>> for y in range(100):
>>> if (x % 16) // 8 == (y % 16) // 8:
>>> array[y, x] = 0
>>> else:
>>> array[y, x] = 255
>>>
>>> img = Image.fromarray(array)
>>> img.save('img.png')

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/371790.html
上一篇:如何消除/洗掉在陣列中重復大量時間的物件陣列元素的重復項。(回傳相同的陣列型別)
下一篇:如何回圈連接
