[파이썬] opencv-python 이미지 스티칭 및 파노라마 생성

이미지 스티칭은 여러 장의 이미지를 하나로 이어붙이는 기술입니다. 이를 이용하면 여러 장의 이미지를 파노라마 형태로 만들 수 있습니다. 이번 포스트에서는 OpenCV-Python을 사용하여 이미지 스티칭 및 파노라마를 생성하는 방법에 대해 알아보겠습니다.

1. 필요한 패키지 설치하기

먼저 OpenCV-Python 패키지를 설치해야 합니다. 아래 명령어를 사용하여 설치할 수 있습니다.

pip install opencv-python

2. 이미지 스티칭하기

이제 이미지 스티칭을 위한 코드를 작성해보겠습니다. 아래의 예제 코드는 cv2.Stitcher 클래스를 사용하여 이미지 스티칭을 수행합니다.

import cv2

# 이미지 파일 경로
image_files = ["image1.jpg", "image2.jpg", "image3.jpg"]

# 이미지 로드
images = []
for file in image_files:
    image = cv2.imread(file)
    images.append(image)

# 스티칭 수행
stitcher = cv2.Stitcher_create()
status, stitched_image = stitcher.stitch(images)

# 결과 출력
if status == cv2.Stitcher_OK:
    cv2.imshow("Stitched Image", stitched_image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
else:
    print("Stitching failed!")

위 코드에서는 image_files 리스트에 스티칭할 이미지 파일들의 경로를 저장합니다. 이미지 파일들을 읽어와서 images 리스트에 저장한 후, cv2.Stitcher 클래스의 stitch() 메서드를 사용하여 이미지 스티칭을 수행합니다. 그리고 status 변수를 통해 스티칭이 성공적으로 수행되었는지 여부를 확인한 후, 결과 이미지를 출력하거나 실패 메시지를 출력합니다.

3. 파노라마 생성하기

이미지 스티칭을 통해 파노라마 이미지를 생성할 수 있습니다. 아래의 예제 코드는 이미지 스티칭 단계에서 수행한 코드에 추가 작업을 통해 파노라마 이미지를 저장하는 방법을 보여줍니다.

import cv2

# 이미지 파일 경로
image_files = ["image1.jpg", "image2.jpg", "image3.jpg"]

# 이미지 로드
images = []
for file in image_files:
    image = cv2.imread(file)
    images.append(image)

# 스티칭 수행
stitcher = cv2.Stitcher_create()
status, stitched_image = stitcher.stitch(images)

# 결과 저장
if status == cv2.Stitcher_OK:
    cv2.imwrite("panorama.jpg", stitched_image)
    print("Panorama saved successfully!")
else:
    print("Stitching failed!")

위 코드에서는 스티칭이 성공적으로 수행되면 cv2.imwrite() 함수를 사용하여 panorama.jpg 파일로 파노라마 이미지를 저장합니다.

마무리

이번 포스트에서는 OpenCV-Python을 사용하여 이미지 스티칭 및 파노라마 생성하는 방법을 알아보았습니다. 이를 통해 여러 장의 이미지를 하나로 이어 붙여 파노라마 이미지를 만들 수 있습니다. 파노라마 이미지를 활용하여 멋진 비주얼 효과를 만들어보세요!