Python Pillow - ML พร้อม Numpy

ในบทนี้เราใช้ numpy เพื่อจัดเก็บและจัดการข้อมูลภาพโดยใช้ python imaging library - "pillow"

ก่อนดำเนินการตามบทนี้ให้เปิดพรอมต์คำสั่งในโหมดผู้ดูแลระบบและดำเนินการคำสั่งต่อไปนี้เพื่อติดตั้ง numpy -

pip install numpy

Note - ใช้งานได้เฉพาะเมื่อคุณติดตั้งและอัปเดต PIP

การสร้างภาพจาก Numpy Array

สร้างภาพ RGB โดยใช้ PIL และบันทึกเป็นไฟล์ jpg ในตัวอย่างต่อไปนี้เราจะ -

  • สร้างอาร์เรย์ 150 x 250 พิกเซล

  • เติมครึ่งซ้ายของอาร์เรย์ด้วยสีส้ม

  • เติมครึ่งขวาของอาร์เรย์ด้วยสีน้ำเงิน

from PIL import Image
import numpy as np

arr = np.zeros([150, 250, 3], dtype=np.uint8)

arr[:,:100] = [255, 128, 0]

arr[:,100:] = [0, 0, 255]

img = Image.fromarray(arr)

img.show()

img.save("RGB_image.jpg")

เอาต์พุต

การสร้างภาพสีเทา

การสร้างภาพสีเทาแตกต่างจากการสร้างภาพ RGB เล็กน้อย เราสามารถใช้อาร์เรย์ 2 มิติเพื่อสร้างภาพสีเทา

from PIL import Image
import numpy as np

arr = np.zeros([150,300], dtype=np.uint8)

#Set grey value to black or white depending on x position
   for x in range(300):
      for y in range(150):
         if (x % 16) // 8 == (y % 16)//8:
            arr[y, x] = 0
         else:
            arr[y, x] = 255
img = Image.fromarray(arr)

img.show()

img.save('greyscale.jpg')

เอาต์พุต

การสร้างอาร์เรย์จำนวนนับจากรูปภาพ

คุณสามารถแปลงภาพ PIL เป็นอาร์เรย์ numpy และในทางกลับกัน โปรแกรมขนาดเล็กที่แสดงให้เห็นถึงสิ่งเดียวกันมีระบุไว้ด้านล่าง

ตัวอย่าง

#Import required libraries
from PIL import Image
from numpy import array

#Open Image & create image object
img = Image.open('beach1.jpg')

#Show actual image
img.show()

#Convert an image to numpy array
img2arr = array(img)

#Print the array
print(img2arr)

#Convert numpy array back to image
arr2im = Image.fromarray(img2arr)

#Display image
arr2im.show()

#Save the image generated from an array
arr2im.save("array2Image.jpg")

เอาต์พุต

หากคุณบันทึกโปรแกรมข้างต้นเป็น Example.py และดำเนินการ -

  • จะแสดงภาพต้นฉบับ

  • แสดงอาร์เรย์ที่ดึงมาจากอาร์เรย์

  • แปลงอาร์เรย์กลับเป็นรูปภาพและแสดง

  • เนื่องจากเราใช้วิธี show () ภาพจึงแสดงโดยใช้ยูทิลิตี้การแสดงผล PNG เริ่มต้นดังต่อไปนี้

[[[ 0 101 120]
[ 3 108 127]
[ 1 107 123]
...
...
[[ 38 59 60]
[ 37 58 59]
[ 36 57 58]
...
[ 74 65 60]
[ 59 48 42]
[ 66 53 47]]
[[ 40 61 62]
[ 38 59 60]
[ 37 58 59]
...
[ 75 66 61]
[ 72 61 55]
[ 61 48 42]]
[[ 40 61 62]
[ 34 55 56]
[ 38 59 60]
...
[ 82 73 68]
[ 72 61 55]
[ 63 52 46]]]

Original Image

Image constructed from the array