numpy之通過陣列與PIL.Image物件的互轉進行圖片處理
------------------------------------------------語法基礎------------------------------------------------
import numpy 相關模組
import PIL.Image 相關模組
numpy.array(img) img物件轉化為np陣列
Image.fromarray(arr) np陣列轉化為img物件
------------------------------------------------程式碼實現------------------------------------------------
import numpy as np import PIL.Image as I
# 新建影象,引數為圖片模式,尺寸,初始顏色 img=I.new('RGB',(1000,1000),(255,255,255)) # 把此img物件轉化為np物件 arr=np.array(img)
# 把選擇的區域,轉為指定的顏色,引數解釋: # arr:上面的那個arr # color:你指定的顏色 # h1,h2:選擇的區域的最高點和最低點 # x1,x2:選擇的區域的最左邊和最右邊,這裡預設為0到-1 # space:自定義的區域,此區域生效,意味著前面的區域選擇無效 def change_color(arr,color,h1=0,h2=-1,x1=0,x2=-1,space=np.array([])): if not space.any(): space=arr[h1:h2,x1:x2] space[:,:,0]=color[0] space[:,:,1]=color[1] space[:,:,2]=color[2] return space
if __name__=='__main__': # 通過陣列切割,並帶入方法,我們得到這種線條和長方形 # 因為np陣列是檢視切割,我們甚至不用接收返回值做後續處理 change_color(arr,(255,0,0),100,101,100,-100) change_color(arr,(255,0,0),120,500,100,-100) change_color(arr,(0,255,0),520,800,100,-100) change_color(arr,(0,255,0),100,800,90,92) change_color(arr,(0,255,0),100,800,-90,-89) # 這裡我們自定義了區域,得到了很多虛線 space=arr[820:850:2,100:-100:3] change_color(arr,(0,0,0),space=space) # 操作完畢,我們把np陣列轉回img物件並顯示 img=I.fromarray(arr) img.show()
------------------------------------------------效果展示------------------------------------------------