파이썬으로 OpenCV를 이용하여 동영상에서 사람 저장하기
이번 포스트에서는 OpenCV와 Python을 사용하여 동영상에서 사람을 감지하고 저장하는 방법에 대해 알아보겠습니다.
OpenCV 설치하기
먼저, OpenCV를 설치해야 합니다. 다음 명령어를 사용하여 OpenCV를 설치할 수 있습니다.
pip install opencv-python
동영상에서 사람 감지하기
다음으로, 동영상에서 사람을 감지하는 코드를 작성해보겠습니다. 아래 코드를 사용하여 동영상 파일을 열고 사람을 감지할 수 있습니다.
import cv2
# 동영상 파일 열기
video = cv2.VideoCapture('동영상 파일 경로')
# 사람 감지 모델 불러오기
cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_fullbody.xml')
while True:
# 한 프레임씩 읽기
ret, frame = video.read()
# 사람 감지하기
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
bodies = cascade.detectMultiScale(gray, 1.1, 4)
# 감지된 사람에 사각형 그리기
for (x, y, w, h) in bodies:
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
# 화면에 출력하기
cv2.imshow('Video', frame)
# 'q' 키를 누르면 종료하기
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 종료하기
video.release()
cv2.destroyAllWindows()
사람 저장하기
감지된 사람을 저장하기 위해 각각의 프레임을 이미지로 저장하는 코드를 추가해보겠습니다.
import cv2
import os
video = cv2.VideoCapture('동영상 파일 경로')
cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_fullbody.xml')
# 저장할 디렉토리 생성
if not os.path.exists('images'):
os.makedirs('images')
frame_count = 0
while True:
ret, frame = video.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
bodies = cascade.detectMultiScale(gray, 1.1, 4)
for (x, y, w, h) in bodies:
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
cropped_image = frame[y:y + h, x:x + w]
cv2.imwrite(f'images/frame_{frame_count}.jpg', cropped_image)
frame_count += 1
cv2.imshow('Video', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
video.release()
cv2.destroyAllWindows()
위 코드에서는 images
라는 이름의 새로운 디렉토리를 생성하고, 각 프레임을 저장할 때마다 이미지로 저장합니다. 저장되는 이미지는 frame_프레임 번호.jpg
형식으로 저장됩니다.
이제 동영상에서 사람을 감지하고 저장하는 코드를 사용할 수 있습니다.
결론
위에서 작성한 코드를 사용하여 OpenCV를 이용하여 동영상에서 사람을 감지하고 저장하는 방법을 알아보았습니다. 이를 통해 동영상 처리 및 객체 감지에 관심이 있는 개발자들은 유용한 정보를 얻을 수 있을 것입니다.
참고 자료: