OpenCV 이미지 변형
cv2.resize(image, dsize, fx, fy, interpolation): 이미지의 크기 조절
- dsize: Manual size
- fx, fy: 가로, 세로 비율
- interpolation: 보간법(사이즈가 변할 때 픽셀 사이의 값을 조절하는 방법),
INTER_CUBIC: 사이즈를 크게 할 때 사용, INTER_AREA: 사이즈를 줄일 때 사용
import cv2
import matplotlib.pyplot as plt
image = cv2.imread('cat.jpg')
expand = cv2.resize(image, None, fx=2.0, fy=2.0, interpolation=cv2.INTER_CUBIC)
plt.imshow(cv2.cvtColor(expand, cv2.COLOR_BGR2RGB))
plt.show()
shrink = cv2.resize(image, None, fx=0.8, fy=0.8, interpolation=cv2.INTER_AREA)
plt.imshow(cv2.cvtColor(shrink, cv2.COLOR_BGR2RGB))
plt.show()
cv2.warpAffine(image, M, dsize): 이미지의 위치 변경
- M: 변환 행렬
[[M1, M2, M3],
[M4, M5, M6]]
이미지의 모든 좌표(a,b)는 이동한다.
(M1a + M2b + M3, M4a + M5b + M6)
import cv2
import matplotlib.pyplot as plt
import numpy as np
image = cv2.imread('cat.jpg')
height, width = image.shape[:2]
M = np.float32([[1, 0, 50], [0, 1, 10]])
dst = cv2.warpAffine(image, M, (width, height))
plt.imshow(cv2.cvtColor(dst, cv2.COLOR_BGR2RGB))
plt.show()
출력 결과

cv2.getRotationMatrix2D(center, angle, scale): 이미지 회전을 위한 변환 행렬 생성
- center: 회전 중심
- angle: 회전 각도
- scale: Scale Factor
import cv2
import matplotlib.pyplot as plt
import numpy as np
image = cv2.imread('cat.jpg')
height, width = image.shape[:2]
M = cv2.getRotationMatrix2D((width/2, height/2), 90, 0.5)
dst = cv2.warpAffine(image, M, (width, height))
plt.imshow(cv2.cvtColor(dst, cv2.COLOR_BGR2RGB))
plt.show()
출력 결과
