본문 바로가기
IT/OpenCV

cv2.warpAffine()

by Jang HyunWoong 2014. 12. 19.

기본형태

Python: cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) → dst
Parameters:
  • src – input image.
  • dst – output image that has the size dsize and the same type as src .
  • M – 2\times 3 transformation matrix.
  • dsize – size of the output image.
  • flags – combination of interpolation methods (see resize() ) and the optional flag WARP_INVERSE_MAP that means that M is the inverse transformation ( \texttt{dst}\rightarrow\texttt{src} ).
  • borderMode – pixel extrapolation method (see borderInterpolate()); when borderMode=BORDER_TRANSPARENT , it means that the pixels in the destination image corresponding to the “outliers” in the source image are not modified by the function.
  • borderValue – value used in case of a constant border; by default, it is 0.


Translation

translation은 오브젝트의 위치를 변화시키는 것이다.  만약 (x,y) 방향으로 픽셀을 옮기고 싶다면, (t_x,t_y)로 표현할 수 있다. 그리고 매트릭스 M으로 표시해서 translation 해야한다. matrix \textbf{M} :

Numpy 행렬을 사용해서 만들 수 있다. np.float32 그리고 cv2.warpAffine() 함수를 사용해서 만든다.. 
아래 코드 예는 이미지를 (100,50) 만큼 옮기는 예이다.

import cv2
import numpy as np

img = cv2.imread('picture.jpg',0) #picture.jpg 이미지를 img변수에 입력한다.
rows,cols = img.shape #이미지의 행과, 열을 rows와 cols에 넣는다.

M = np.float32([[1,0,100],[0,1,50]]) #translation M matrix
dst = cv2.warpAffine(img,M,(cols,rows)) #translation된 dst변수

cv2.imshow('img',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

주의 할 점

cv2.warpAffine() 함수의 세번째 값으로 들어 가는 범위는 (width(넓이), height(높이). width = 열의 수, height = 행의 수.

결과:

Translation


반응형