Gối Python - ML với Numpy

Trong chương này, chúng tôi sử dụng numpy để lưu trữ và thao tác dữ liệu hình ảnh bằng thư viện hình ảnh python - “gối”.

Trước khi tiếp tục chương này, hãy mở dấu nhắc lệnh ở chế độ quản trị viên và thực hiện lệnh sau trong đó để cài đặt numpy:

pip install numpy

Note - Điều này chỉ hoạt động nếu bạn đã cài đặt và cập nhật PIP.

Tạo hình ảnh từ Numpy Array

Tạo hình ảnh RGB bằng PIL và lưu dưới dạng tệp jpg. Trong ví dụ sau, chúng tôi sẽ -

  • Tạo một mảng 150 x 250 pixel.

  • Tô màu cam cho nửa bên trái của mảng.

  • Tô màu xanh lam cho nửa bên phải của mảng.

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

Đầu ra

Tạo hình ảnh thang độ xám

Tạo ảnh thang độ xám hơi khác với tạo ảnh RGB. Chúng ta có thể sử dụng mảng 2 chiều để tạo hình ảnh thang độ xám.

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

Đầu ra

Tạo mảng numpy từ một Hình ảnh

Bạn có thể chuyển đổi ảnh PIL sang mảng numpy và ngược lại. Dưới đây là một chương trình nhỏ để chứng minh điều tương tự.

Thí dụ

#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")

Đầu ra

Nếu bạn lưu chương trình trên dưới dạng example.py và thực thi -

  • Nó hiển thị hình ảnh gốc.

  • Hiển thị mảng được truy xuất từ ​​nó.

  • Chuyển đổi mảng trở lại thành hình ảnh và hiển thị nó.

  • Vì chúng tôi đã sử dụng phương thức show (), các hình ảnh được hiển thị bằng tiện ích hiển thị PNG mặc định, như sau.

[[[ 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