본문 바로가기
  • AI 개발자가 될래요
컴퓨터비전

[Python/OpenCV] 이미지 좌우/상하 반전 하는 법, cv.flip()

by 꿀개 2024. 1. 2.

[Python/OpenCV] 이미지 좌우/상하 반전 하는 법, cv.flip()

 

이미지 좌우 혹은 상하 반전이 필요한 순간은 언제?

파이썬을 이용하여 opencv의 내장 함수로 실시간 웹캠을 읽어올 때에 기본값은 좌우 반전이 되어있지 않다.

 

카메라가 나를 비추고 있을 때, 내가 오른 손을 든다면 화면 속의 나는 왼쪽 손을 든 것 처럼 보인다.

이는 사용자와 상호작용하는 UI엔 적합하지 않다.

 

그래서 우리는 이미지를 좌우반전 할 필요가 있다.

 

좌우반전 하는 법

Python에서 OpenCV를 이용하여 이미지를 좌우반전 하는 코드는 아래와 같다.

 

img_flip = cv2.flip(img, 1)

 

원본 이미지를 cv2.flip() 메소드의 첫 번째 입력으로 넣고, 그 뒤에 플래그 1을 넣는다.

이 메소드는 플래그 값에 따라 좌우 혹은 상하 반전을 수행한다.

 

플래그 종류

  • 양수 : 좌우반전
  • 음수 : 상하좌우반전
  • 0 : 상하반전

 

목적에 맞는 플래그를 넣어주면 되겠다.

 

결과 예시

다음과 같은 원본 영상이 있다고 하자.

- 원본 이미지

출처: https://www.starnewsk.com/news/articleView.html?idxno=38915

 

- 좌우반전 후 영상

좌우반전 결과

 

cv2.flip()을 사용하여 좌우 반전이 잘 된 것을 볼 수 있다.

 

위 알고리즘을 수행하기 위한 코드는 아래에 있다. (아주 간단하다.)

 

import cv2

input_path = r"./38915_63236_5525.jpg"  # 이미지 경로

def read_img():
    img = cv2.imread(input_path, cv2.IMREAD_COLOR)
    img_flip = cv2.flip(img, 1)

    cv2.imshow("img_flip", img_flip)
    cv2.waitKey(0)
    
if __name__ == '__main__':
    read_img()