Python Pillow-Numpy를 사용한 ML

이 장에서는 numpy를 사용하여 파이썬 이미징 라이브러리 "베개"를 사용하여 이미지 데이터를 저장하고 조작합니다.

이 장을 진행하기 전에 관리자 모드에서 명령 프롬프트를 열고 다음 명령을 실행하여 numpy를 설치하십시오.

pip install numpy

Note − PIP를 설치하고 업데이트 한 경우에만 작동합니다.

Numpy 배열에서 이미지 만들기

PIL을 사용하여 RGB 이미지를 만들고 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')

산출

이미지에서 numpy 배열 만들기

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