본문 바로가기
Image Processing (Python)

Rotate (회전)

by HanByol Jang 2021. 11. 24.
728x90

함수 설명

이미지를 회전 시킬때 사용하는 함수입니다.

 

이미지의 중심 pixel을 기준으로 반 시계 방향으로 회전시켜줍니다.
이미지의 크기를 유지하지 않고 회전시키는 방법과 유지시킨 채 회전하는 방법이 있습니다.

이미지의 크기를 유지하면서 회전하게 되면 잘려나가는 부분이 발생하게 됩니다.


코드 설명

python에서 이미지를 회전시키는 방법은 다양합니다.

그 가운데 몇가지 방법에 대해 소개하도록 하겠습니다.

 

1. OpenCV 라이브러리

* 크기 유지 O

matrix = cv2.getRotationMatrix2D((width/2, height/2), angle, 1)
output= cv2.warpAffine(src, matrix, (width, height))

 

1) src : 바꾸고 싶은 source 이미지

2) width, height : source 이미지의 가로, 세로 길이

3) angle : 회전할 각도

 

* 크기 유지 X

output = cv2.rotate(src, rotateCode)

1) src : 바꾸고 싶은 source 이미지

2) rotateCode : 회전할 각도

cv2.ROTATE_90_CLOCKWISE  시계방향으로 90도
cv2.ROTATE_180  180도
cv2.ROTATE_90_COUNTERCLOCKWISE  시계반대방향으로 90도

 

2. scikit-image 라이브러리

from skimage.transform import rotate

output = rotate(src, angle, resize=True)

1) src : 바꾸고 싶은 source 이미지

2) angle : 회전할 각도

3) resize : 크기 유지 유무

False이면 크기유지 O, True이면 크기유지 X

 

3. Pilow 라이브러리

* 크기 유지 O

output = src.rotate(angle)

1) src : 바꾸고 싶은 source 이미지
2) angle : 회전할 각도

 

* 크기 유지 X

output = src.transpose(rotateCode)

1) src : 바꾸고 싶은 source 이미지
2) rotateCode: 회전할 각도

Image.ROTATE_90 시계반대방향으로 90도
Image.ROTATE_180 180도
Image.ROTATE_270 시계반대방향으로 270도

예제

다양한 함수를 통해 이미지 회전시킵니다.

import cv2
from skimage import io
from skimage.transform import rotate
from PIL import Image

# Image Load
image = io.imread('rose.jpg')
angle = 90

# OpenCV
height, width = image.shape[0:2]
matrix = cv2.getRotationMatrix2D((width/2, height/2), angle, 1)
cv_output1 = cv2.warpAffine(image, matrix, (width, height))
cv_output2 = cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE)

# scikit-image
sci_output1 = rotate(image, angle, resize=False)
sci_output2 = rotate(image, angle, resize=True)

# Pillow
colorImage = Image.open("cat.jpg")

pillow_output1 = colorImage.rotate(angle)
pillow_output2 = colorImage.transpose(Image.ROTATE_90)

 

크기를 유지한채 회전하면 위의 이미지처럼 짤리거나 여백이 생기는걸 확인 할 수 있습니다. 반면에 크기를 유지하지 않은채 회전하면 원본 이미지의 정보는 유지되지만 크기가 바뀌는 것을 확인할 수 있습니다.

728x90

댓글