[파이썬] opencv-python 비디오 스트림에서 객체 추출

OpenCV Logo

OpenCV-Python은 컴퓨터 비전 및 이미지 처리 작업을 수행하기 위한 강력한 도구입니다. 이 블로그 포스트에서는 OpenCV-Python을 사용하여 비디오 스트림에서 객체를 추출하는 방법을 알아보겠습니다.

준비물

이 예제를 따라하기 위해선 다음과 같은 준비물이 필요합니다:

비디오 스트림에서 객체 추출하기

아래 예제 코드를 사용하여 비디오 스트림에서 객체를 추출할 수 있습니다.

import cv2

# 비디오 파일 경로 혹은 웹카메라 번호를 지정합니다.
video_path = 'path/to/video/file.mp4'  # 비디오 파일 경로
# video_path = 0  # 웹카메라

# OpenCV 비디오 캡처 객체를 생성합니다.
cap = cv2.VideoCapture(video_path)

# 객체 추출을 위한 Cascade Classifier 파일 경로를 지정합니다.
cascade_path = 'path/to/cascade/classifier.xml'

# Cascade Classifier 객체를 생성합니다.
face_cascade = cv2.CascadeClassifier(cascade_path)

# 비디오 스트림을 반복하며 객체 추출을 수행합니다.
while True:
    # 비디오 프레임을 읽어옵니다.
    ret, frame = cap.read()

    # 비디오 프레임을 그레이 스케일로 변환합니다.
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Cascade Classifier를 사용하여 얼굴을 검출합니다.
    faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

    # 검출된 얼굴 주위에 사각형을 그려줍니다.
    for (x, y, w, h) in faces:
        cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

    # 화면에 결과를 출력합니다.
    cv2.imshow('Object Extraction', frame)

    # 'q' 키를 누르면 종료합니다.
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 비디오 캡처 객체를 해제합니다.
cap.release()

# 윈도우를 닫습니다.
cv2.destroyAllWindows()

위 예제 코드에서는 비디오 파일을 읽어오거나 웹카메라로부터 비디오 스트림을 받아올 수 있습니다. 또한, 객체를 추출하기 위해 Cascade Classifier를 사용합니다. Cascade Classifier를 훈련시켜 얼굴, 눈, 차량 등의 객체를 검출하는데 사용할 수 있습니다.

비디오 스트림을 읽어온 후 프레임마다 그레이 스케일로 변환하여 Cascade Classifier를 사용하여 객체를 검출합니다. 검출된 객체 주위에 사각형을 그려주고, 화면에 출력합니다. 마지막으로 ‘q’ 키를 누르면 프로그램이 종료됩니다.

위 예제를 참고하여 OpenCV-Python을 사용하여 비디오 스트림에서 객체를 추출하는 방법을 익힐 수 있습니다. OpenCV-Python은 다양한 컴퓨터 비전 작업에 사용할 수 있는 강력한 도구이므로, 더 많은 기능과 사용법을 살펴보시길 권장합니다.