728x90
함수 설명
이미지를 좌우 또는 상하 반전을 할때 사용하는 함수입니다.
이미지의 중심 픽셀을 기준으로 좌우 반전은 y축 대칭, 상하반전은 x축을 대칭을 통해 새로운 픽셀 값을 획득합니다.
코드 설명
python에서 이미지 대칭을 할 수 있는 방법은 다양합니다.
그 가운데 몇가지 방법에 대해 소개하도록 하겠습니다.
1. OpenCV 라이브러리
import cv2
cv2.flip(src, flipCode)
1) src : 바꾸고 싶은 source 이미지
2) flipCode : 대칭 방향
-1 : 좌우, 상하 반전
0 : 상하 반전
1 : 좌우 반전
2. numpy 라이브러리
import numpy as np
np.flip(src, (0, 1)) : 좌우, 상하 반전
np.flipud(src) : 상하 반전
np.fliplr(src) : 좌우 반전
np.flip사용시, color 이미지의 color 채널까지 반전되기 때문에 y,x축만 반전하도록 (0, 1) 파라미터 입력
3. Pillow 라이브러리
from PIL import Image
image.transpose(directionCode)
1) directionCode : 대칭 방향
Image.FLIP_TOP_BOTTOM | 상하 반전 |
Image.FLIP_LEFT_RIGHT | 좌우 반전 |
예제
다양한 함수를 통해 이미지 대칭시킵니다.
import cv2
import numpy as np
import matplotlib.pyplot as plt
from skimage import io
from PIL import Image
# Image Load
image = io.imread('cat.jpg')
cv_output_list = list()
cv_output_list.append(image)
# OpenCV Flip
for i in range(-1,2):
cv_output_list.append(cv2.flip(image, i))
title_list = ['Original', 'left-right, up-down flip', 'up-down flip', 'left-right flip']
for i in range(len(cv_output_list)):
plt.subplot(2,2, (i+1))
plt.imshow(cv_output_list[i])
plt.title(title_list[i])
plt.axis('off')
plt.show()
# Numpy Flip
np_output_list = list()
np_output_list.append(image)
np_output_list.append(np.flip(image, (0, 1)))
np_output_list.append(np.flipud(image))
np_output_list.append(np.fliplr(image))
for i in range(len(np_output_list)):
plt.subplot(2,2, (i+1))
plt.imshow(np_output_list[i])
plt.title(title_list[i])
plt.axis('off')
plt.show()
# Pillow Flip
image = Image.open('cat.jpg')
image.transpose(Image.FLIP_TOP_BOTTOM)
image.show()
image.transpose(Image.FLIP_LEFT_RIGHT)
image.show()
728x90
'Image Processing (Python)' 카테고리의 다른 글
Embossing (엠보싱) (0) | 2021.11.18 |
---|---|
Smoothing (0) | 2021.11.17 |
Sharpening (샤프닝) (1) | 2021.11.15 |
Image Read (이미지 불러오기) (0) | 2021.11.11 |
Invert (색반전) (0) | 2021.11.10 |
댓글