PIL圖像操作的一些筆記

1,操作像素putpixel

座標原點是左上

width = 100
height = 200
xpath = "test.png"
im = Image.new("RGB", (width, height))  # 創建圖片
# 通過每個rgb點生成圖片
for i in range(width):
    for j in range(height):
        r = 0
        if i < 10 and j < 20:
            r = 255
        g = 0
        b = 0
        im.putpixel((i, j), (r, g, b))
im.save(xpath)

2,numpy數據結構存儲

左上角的座標原點,第一維數組爲height,第二維數組爲width

imt = Image.new("RGB", (width, height))
nptest = np.array(imt)
for i in range(width):
    for j in range(height):
        if i < 10 and j > 10:
            nptest[j][i][2] = 255

imtestg = Image.frombytes("RGB", (int(width), int(height)), nptest.tobytes())
# imtestg = imtestg.transpose(Image.FLIP_TOP_BOTTOM)
# 上下翻轉
imtestg.save(xpath)

3,image 轉 numpy array

image轉arrag,數組轉入後,img.shape返回的是,高,寬。

處理的時候,數組維度依然是高,寬。

im = Image.open(xpath,"r")

img = np.array(im)

# 200,100
# 數組1維 2維
h,w,d = img.shape

xpath = "test1.png"
im = Image.new("RGB", (w, h))  # 創建圖片
# 通過每個rgb點生成圖片
for i in range(w):
    for j in range(h):
        r = img[j][i][0]
        g = img[j][i][1]
        b = img[j][i][2]
        im.putpixel((i, j), (r, g, b))
im.save(xpath)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章