PIL對象和numpy三維數組的互相轉換


#https://stackoverflow.com/questions/384759/how-to-convert-a-pil-image-into-a-numpy-array

from PIL import Image
import numpy as np
img1=Image.open("f:\cat.jpg")
pix_data2=np.array(img1.getdata()).reshape(img1.size[0],img1.size[1],3)
im=Image.fromarray(np.uint8(pix_data2))

im.show()

這個程序的有意思之處在於把rgb圖的通道,分開存入一個三維數組的三個維度中,可以加深對圖片通道的理解,比如把程序修改成

from PIL import Image
import numpy as np
img1=Image.open("f:\cat.jpg")

pix_data2=np.array(img1.getdata()).reshape(img1.size[0],img1.size[1],3)

pix_data4=pix_data2[0:,0:,0:1]
pix_data5=pix_data2[0:,0:,1:2]
pix_data6=pix_data2[0:,0:,2:3]
pix_data7=pix_data2[0:,0:,0:2]
pix_data8=pix_data2[0:,0:,1:3]
pix_data9=pix_data2[0:,0:,::2]

print(list(pix_data2))
print(list(pix_data4))
print(list(pix_data5))
print(list(pix_data6))
print(list(pix_data6))
print(list(pix_data7))
Image.fromarray(np.uint8(pix_data7)).show()
Image.fromarray(np.uint8(pix_data8)).show()
Image.fromarray(np.uint8(pix_data9)).show()

>>

rgb三色去掉一種顏色就變成灰色,另外把顏色rgb顏色反轉(r<-b,g<-g,b<-r)也產生讓人意想不到的效果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM