본문 바로가기
딥러닝\머신러닝

[tensorflow]python에서 이미지 읽는 방법

by 인포메틱스 2022. 3. 12.
반응형

이미지를 읽는 예제는 빵형에 공개한 캐글 데이터를 이용하였습니다.

 

https://www.kaggle.com/kairess/find-waldo

 

Find Waldo

 

www.kaggle.com


 

python에서 이미지 분석을 하기 위해서는 가장먼저 이미지를 읽어야겠죠.

 

python에서는 다양하게 읽어올 수가 있습니다.

 

주로 numpy, pilow, opencv를 이용합니다.

 

1. numpy

numpy의 경우 계산하는 모듈로 생각하는 사람들이 많은데, numpy의 기능중에 array데이터를 읽어 올 수가 있어서 가능합니다.

 

그렇다면 array데이터란 무엇일까? array를 사람들은 list같은 객체라고 이야기를 합니다.

 

list같이 다양한 차원의 데이터를 가질수가 있으나, 각 데이터에는 n*m이 모두 같은 메트릭스가 들어가 있습니다.

 

그렇다면 array데이터랑 이미지랑 무슨상관?

 

이미지랑 array데이터랑 무슨상관일까 궁금해할 수가 있는데, 이미지에서 각 단위마다 표현하는 색을 RGB를 이용하게 되는데, RGB를 array데이터로 만들수있기 때문입니다.

 

RGB? (Red, Green, Blue) 이렇게 세개의 색감을 이용하여 색을 표현하는 방법으로 아래 사이트에서 색감마다 RGB값을 확인할 수가 있습니다.

https://www.w3schools.com/colors/colors_rgb.asp

 

Colors RGB

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

red의 rgb 값은 255,0,0 이다.

 

본론으로 들어와서 numpy로 이미지 데이터를 가지고 올수는 있지만, 실제 읽기 위해서는 또 다양한 방법으로 가능하다. pillow module이나, matplotlib로 읽기가 가능합니다.

 

import numpy as np
import matplotlib.pyplot as plt
from PIL import Image

#numpy로 array 데이터를 읽어옵니다.
imgs = np.load('dataset/imgs_uint8.npy')

# matplotlib를 이용하여 읽기
plt.imshow(imgs[0])

# pillow (PIL)을 이용하여 읽기
test_image=Image.fromarray((imgs[0]).astype(np.uint8))
test_image.show()
# show를 쓰면 새창으로 뜨고 아닌경우 jupyter에 바로 뜹니다.

 

2. pillow module (PIL, Python Image Library)

 

pillow의 경우 그냥 python에서 이미지를 다루는 모듈인데, 간단하게 읽을 수가 있습니다. 

 

from PIL import Image
test_image=Image.open('test_imgs/01.jpg')
test_image

 

3. opencv

 

opencv는 실시간 컴퓨터 비전을 다루는데 목적을 둔 라이브러리인데, python에서 사용가능하게 module로 만들어 두었습니다(그렇기 때문에 설치를 하려면 pip install opencv-python 이라고 하면된다.). 비슷한 경우가 openslide도 마찬가지입니다.

 

opencv도 간단하게 읽을 수가 있다. 

import cv2
test_image=cv2.imread('test_imgs/01.jpg')
cv2.imshow('tesst',test_image)
# 0을 줘야지 이미지를 계속 볼수가 있다.
cv2.waitKey(0)

 

 

이 글에서의 핵심은 이미지 데이터는 결국 array로 읽어서 진행이 되고 결국 array를 어떻게 다루느냐에 따라 좋고 빠른 모델이 만들어 질거라는 생각이 듭니다(그렇기 때문에 연습!).

728x90
반응형

댓글