이미지 데이터 처리의 기본 - Pillow 기본 사용법
컴퓨터에서 이미지는 배열형태의 데이터로 표현된다.
가로 세로 32x 32 픽셀에 RGB 색상 채널이 있다면, Numpy로 [32, 32, 3]차원의 배열을 생성하면 된다. 또한 데이터 타입을 값이 부호가 없는(unsigned) 8비트 정수(integer)가 되어 0~255(2의 8승 = 256) 사이의 값을 나타내는 uint8을 사용해야한다.
import numpy as np
from PIL import Image
data = np.zeros([32, 32, 3], dtype=np.uint8)
image = Image.fromarray(data, 'RGB') # data를 이미지 객체로 변환한 뒤 화면에 표시한다.
image
PIL.Image.fromarray()
는 ()안에 데이터를 이미지 객체로 변환한다.
np.zeros()
로 초기화된 모든 픽셀의 모든 채널의 값이 0이기 때문에 검은색 이미지가 나왔지다. 이번에는 모든 픽셀이 빨간색으로 색상을 바꿔보자.
data[:,:] = [255, 0, 0] # R, G, B
image = Image.fromarray(data, 'RGB')
image
예제를 만들어보자.
가로 세로 각각 128픽셀의 흰색 이미지를 만들어 화면에 표시해보자.
data = np.zeros([128, 128, 3], dtype=np.uint8)
data[:, :] = [255, 255, 255]
image = Image.fromarray(data, 'RGB')
image
음.... 보이진 않지만 분명 있다....
연습용 이미지로 실습을 간단히 해보자!
from PIL import Image
import os
# 파일 경로
image_path = os.getcwd()+'/practice_image.png'
# 이미지 열기
img = Image.open(image_path)
img
# width와 height 출력
print(img.width)
print(img.height)
# JPG 파일 형식으로 저장해보기
new_image_path = os.getcwd() + '/practice_image.jpg'
img = img.convert('RGB')
img.save(new_image_path)
이미지의 width와 height가 출력된다.
이 이미지를 resize()
를 사용하여 크기를 변경해보자.
resized_image = img.resize((100,200))
resized_image_path = os.getcwd()+'/resized_practice_image.jpg'
resized_image.save(resized_image_path)
resized_image
crop()
을 사용해서 이미지의 일부분만 가져오자.
region = img.crop((300, 100, 600, 400))
cropped_image_path = os.getcwd()+'/cropped_practice_image.jpg'
region.save(cropped_image_path)
region
Author And Source
이 문제에 관하여(이미지 데이터 처리의 기본 - Pillow 기본 사용법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dyeudsla/Pillow저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)