Python/OpenCV

이동, 확대/축소, 회전

ddingz 2022. 3. 4. 10:18

이동

  • dst = cv2.warpAffine(src, mtrx, dsize [, dst, flags, borderMode, borderValue])
    • src : 원본 영상, NumPy 배열
    • mtrx : 2×3 변환행렬, NumPy 배열, dtype = float32
    • dsize : 결과 이미지 크기, tuple(width, height)
    • flags : 보간법 알고리즘 선택 플래그
      • cv2.INTER_LINEAR : 기본 값, 인접한 4개 픽셀 값에 거리 가중치 사용
      • cv2.INTER_NEAREST : 가장 가까운 픽셀 값 사용
      • cv2.INTER_AREA : 픽셀 영역 관계를 이용한 재샘플링
      • cv2.INTER_CUBIC : 인접한 16개 픽셀 값에 거리 가중치 사용
      • cv2.INTER_LANCZOS4 : 인접한 8개 픽셀을 이용한 란초의 알고리즘$^1$
    • borderMode : 외곽 영역 보정 플래그
      • cv2.BORDER_CONSTANT : 고정 색상 값(999|12345|999)
      • cv2.BORDER_REPLICATE : 가장 자리 복제(111|12345|555)
      • cv2.BORDER_WARP : 반복(345|12345|123)
      • cv2.BORDER_REFLECT : 반사(321|12345|543)
    • borderValue : cv2.BORDER_CONSTANT의 경우 사용할 색상 값(기본 값 = 0)
    • dst : 결과 이미지, NumPy 배열

확대/축소

  • dst = cv2.resize(src, dsize, dst, fx, fy, interpolation)
    • src : 입력 영상, NumPy 배열
    • dsize : 출력 영상 크기(확대/축소 목표 크기), 생략하면 fx, fy를 적용
      • (width, height)
    • fx, fy : 크기 배율, 생략하면 dsize를 적용
    • interpolation : 보간법 알고리즘 선택 플래그(cv2.warpAffine()과 동일)
    • dst : 결과 영상, NumPy 배열

회전

  • mtrx = cv2.getRotationMatrix2D(center, angle, scale)
    • center : 회전 축 중심 좌표, 튜플(x, y)
    • angle : 회전 각도, 60진법
    • scale : 확대/축소 배율