[python] OpenCV를 사용하여 이미지에서 동영상에서 경계 찾기

이미지 처리 및 컴퓨터 비전 작업을 위해 널리 사용되는 OpenCV(Open Source Computer Vision Library) 라이브러리는 다양한 기능을 제공합니다. 이 중에서도 동영상 처리를 위한 기능은 매우 유용하며, 이번 예제에서는 OpenCV를 사용하여 이미지에서 동영상에서 경계를 찾는 방법을 알아보겠습니다.

필요한 모듈 임포트하기

먼저, OpenCV를 사용하기 위해 다음과 같이 필요한 모듈을 임포트합니다.

import cv2 as cv
import numpy as np

이미지 불러오기

경계를 찾을 이미지를 불러옵니다. 예를 들어, image.jpg라는 이미지 파일이 있다고 가정해보겠습니다.

image = cv.imread('image.jpg')

이미지 전처리

경계를 찾기 전에 이미지를 전처리해야합니다. 일반적으로 grayscale 이미지로 변환하고, 노이즈를 제거하기 위해 Gaussian blur를 적용하는 것이 좋습니다.

gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
blur = cv.GaussianBlur(gray, (5, 5), 0)

경계 찾기

전처리한 이미지에서 경계를 찾는 알고리즘을 적용합니다. 가장 일반적인 알고리즘 중 하나는 Canny edge detection입니다. 다음은 Canny edge detection 알고리즘을 사용하여 경계를 찾는 코드입니다.

edges = cv.Canny(blur, threshold1, threshold2)

threshold1threshold2는 Canny 알고리즘에서 사용되는 임계값입니다.

경계 표시하기

edges 이미지에 표시할 경계를 그립니다. OpenCV의 cv.drawContours 함수를 사용하여 경계를 표시할 수 있습니다.

contours, hierarchy = cv.findContours(edges, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
cv.drawContours(image, contours, -1, (0, 255, 0), 3)

-1은 모든 경계를 표시하라는 의미입니다. (0, 255, 0)은 경계의 색상을 의미하며, (0, 0, 255)와 같이 다른 색상을 선택할 수 있습니다. 3은 경계 두께를 의미합니다.

결과 확인하기

경계를 포함한 이미지를 확인합니다.

cv.imshow('Image with Contours', image)
cv.waitKey(0)
cv.destroyAllWindows()

cv.imshow 함수를 사용하여 경계를 포함한 이미지를 표시합니다. cv.waitKey(0)은 키보드 입력을 기다립니다. cv.destroyAllWindows()는 모든 창을 닫습니다.

이제 OpenCV를 사용하여 이미지에서 동영상에서 경계를 찾는 방법에 대해 알아보았습니다. 이를 응용하여 다양한 이미지 처리 작업을 수행할 수 있습니다.

참고 자료