1. 程式人生 > >numpy之通過陣列與PIL.Image物件的互轉進行圖片處理

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()

------------------------------------------------效果展示------------------------------------------------