본문 바로가기
Image Processing (Python)

Flip (대칭)

by HanByol Jang 2021. 11. 16.
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()

 

OpenCV 결과
numpy 결과
Pillow 결과

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

댓글