[Python] 이미지 시각화의 기초 PIL, opencv활용
2020. 8. 26. 20:11ㆍTip/Python
package 불러오기¶
In [1]:
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
%matplotlib inline
이미지 파일 열기¶
opencv로도 열수 있지만, 이미지를 좌표값의 수치형으로 변형했을 때, shape 순서가 바뀌는 경향이 많다. 그렇기에 PIL로 여는 것을 학습하고자한다.
In [2]:
path = 'source/dog.jpg'
image_pil = Image.open(path)
image = np.array(image_pil)
이미지 들여다 보기¶
In [7]:
image.shape # 가로 734, 세로 1100, 3(RGB색상 조합)
Out[7]:
In [5]:
np.max(image), np.min(image) # rgb 컬러는 0~255의 숫자 조합으로 이루어짐
Out[5]:
이미지를 로드하고 shape 및 min, max를 통해서 이미지의 range 확인
그래프로 시각화 하기¶
In [9]:
plt.hist(image.ravel(), 256, [0,256])
# ravel() 함수는 numpy값을 1차원 벡터로 변환시키는 것이다.
plt.show()
그림 나타내기¶
In [10]:
plt.imshow(image)
plt.show()
이미지 흑백으로 열기¶
In [15]:
image_bw = image_pil.convert('L')
image_bw = np.array(image_bw)
image_bw.shape # ,3 (rgb색상)이 사라졌다. 즉, 흑백으로 변했다는 것이다.
Out[15]:
흑백 이미지 열기¶
In [16]:
# 흑백으로 보이지가 않는다.
# 수치적으로 value가 높아질 수록 노란색 낮아질 수록 짙은 색으로 표현을 한 것이다.
plt.imshow(image_bw)
plt.show()
다른 색상으로 cmap 표현하기¶
gray scale¶
In [18]:
# cmap을 통해서 흑백으로 볼 수 있다.
plt.imshow(image_bw, cmap='gray')
plt.show()
그 외의 색상¶
RdBu¶
In [10]:
plt.imshow(image_bw, 'RdBu')
plt.show()
jet¶
In [11]:
plt.imshow(image_bw, 'jet')
plt.show()
Colorbar 추가하기¶
In [12]:
plt.imshow(image_bw, 'jet')
plt.colorbar()
plt.show()
이미지 설정¶
이미지 보기 사이즈 조절
In [13]:
plt.figure(figsize=(10, 20))
plt.imshow(image)
plt.show()
이미지에 제목 추가¶
In [19]:
plt.title("Dog")
plt.imshow(image)
plt.show()
두번째 이미지 열기¶
In [20]:
path = 'source/cat.jpg'
image_pil = Image.open(path)
cat_image = np.array(image_pil)
두번쨰 이미지를 첫번째 이미지 모양에 맞추기¶
In [21]:
cat_image.shape
Out[21]:
In [22]:
plt.imshow(cat_image)
plt.show()
두번째 이미지 합치기 위한 준비¶
In [28]:
# opencv가 설치 안 되어있으면 설치를 할 필요가 있다.
!pip install opencv-python
In [31]:
import cv2
cat_image = cv2.resize(cat_image, \
(image.shape[1], image.shape[0]))
# dog 사진의 크기와 동일하게 만든다.
# opencv에서 shape이 행과 열이 바뀌어 인식되어
# [1]->[0] 순서로 shape을 삽입하였다.
image.shape
Out[31]:
In [33]:
cat_image.shape # 이미지 크기 변형 확인
Out[33]:
Image 합치기¶
In [34]:
plt.imshow(image, alpha=0.8)
plt.imshow(cat_image, alpha=0.5)
plt.show()
Subplot¶
In [35]:
plt.figure(figsize=(10, 5))
plt.subplot(2, 2, 1)
plt.imshow(image)
plt.subplot(2, 2, 2)
plt.imshow(cat_image)
plt.subplot(2, 2, 3)
plt.imshow(image_bw, 'gray')
plt.show()
In [ ]:
'Tip > Python' 카테고리의 다른 글
[Python] plt.plot의 기본적인 함수와 사용법 (0) | 2020.08.26 |
---|---|
[Python] numpy 라이브러리의 기본적인 유용한 함수들 (0) | 2020.08.26 |
[Python tip] pandas dataframe과 numpy array의 출력결과를 늘리는 법 (0) | 2020.08.16 |
[Python tip] pandas DataFrame을 csv로 저장하기(encoding) (0) | 2020.08.15 |