Python Pillow - ML dengan Numpy
Dalam bab ini, kami menggunakan numpy untuk menyimpan dan memanipulasi data gambar menggunakan pustaka pencitraan python - “bantal”.
Sebelum melanjutkan dengan bab ini, buka command prompt dalam mode administrator dan jalankan perintah berikut di dalamnya untuk menginstal numpy -
pip install numpy
Note - Ini hanya berfungsi jika Anda menginstal dan memperbarui PIP.
Membuat gambar dari Numpy Array
Membuat gambar RGB menggunakan PIL dan menyimpannya sebagai file jpg. Dalam contoh berikut kami akan -
Buat larik 150 x 250 piksel.
Isi separuh kiri array dengan warna oranye.
Isi separuh kanan array dengan warna biru.
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")
Keluaran
Membuat gambar abu-abu
Membuat gambar skala abu-abu sedikit berbeda dengan membuat gambar RGB. Kita dapat menggunakan array 2 dimensi untuk membuat gambar skala abu-abu.
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')
Keluaran
Membuat larik numpy dari sebuah Image
Anda dapat mengubah gambar PIL menjadi array numpy dan sebaliknya. Sebuah program kecil untuk mendemonstrasikan hal yang sama dinyatakan di bawah ini.
Contoh
#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")
Keluaran
Jika Anda menyimpan program di atas sebagai Example.py dan menjalankan -
Ini menampilkan gambar asli.
Menampilkan larik yang diambil darinya.
Mengubah larik kembali menjadi gambar dan menampilkannya.
Karena kami telah menggunakan metode show (), gambar ditampilkan menggunakan utilitas tampilan PNG default, sebagai berikut.
[[[ 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