반응형
영상 자동 저장과 이미지 추출을 하나의 흐름으로 자동화하면,
AI 모델 학습용 데이터셋 구축부터 품질 모니터링, 보안 캡처 시스템까지 다양한 활용이 가능합니다.
이 글에서는 영상 스트림에서 필요한 장면을 조건에 따라 자동 저장하고,
이미지로 추출해 정리하는 실전 코드를 Python OpenCV 기반으로 정리합니다.
영상 데이터 자동 저장이 필요한 이유
영상 속 데이터를 다룰 때 가장 먼저 고려해야 할 부분은 데이터를 언제, 어떻게 저장할 것인가입니다.
단순히 영상을 저장하는 것을 넘어서,
- 학습용 이미지 생성
- 시점별 캡처
- 특정 이벤트 대응용 장면 저장
등은 모두 자동 저장 시스템이 전제되어야 가능합니다.
OpenCV는 이 과정에서 이미지 추출 자동화 + 저장 최적화에 유용하게 활용됩니다.
반응형
환경 준비 및 OpenCV 설치
작업에 앞서 OpenCV를 설치합니다. GUI 환경이 있는 로컬에서는 아래 명령어를 사용하세요.
pip install opencv-python
서버 환경에서는 다음과 같이 설치하는 것이 안정적입니다.
pip install opencv-python-headless
영상 스트림 자동 저장 + 이미지 추출 코드
다음 예제는 실시간 영상 스트림에서 30프레임마다 이미지로 저장하고,
파일 이름과 경로를 자동으로 지정하여 정리하는 구조입니다.
import cv2
import os
import time
folder = 'dataset_output'
os.makedirs(folder, exist_ok=True)
cap = cv2.VideoCapture('sample_video.mp4')
index = 0
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
if index % 30 == 0:
timestamp = time.strftime('%Y%m%d_%H%M%S')
filename = f'{folder}/frame_{timestamp}_{index}.jpg'
cv2.imwrite(filename, frame)
print(f'Saved: {filename}')
index += 1
cap.release()
- 시간+프레임 조합으로 파일명이 구성되어 자동 분류가 용이합니다.
- 파일명 기준으로 저장 간격을 추적하거나, 외부 연동도 가능하도록 설계되어 있습니다.
실시간 영상 자동 캡처 예제
다음은 웹캠으로 영상을 실시간으로 받아보며,
원하는 시점마다 이미지를 저장할 수 있도록 구성한 예제입니다.
import cv2
import time
cap = cv2.VideoCapture(0)
count = 0
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow('Camera Feed', frame)
key = cv2.waitKey(1)
if key == 32: # 스페이스바
timestamp = time.strftime('%H%M%S')
filename = f'image_{timestamp}_{count}.jpg'
cv2.imwrite(filename, frame)
print(f'Saved: {filename}')
count += 1
elif key == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
자동화 시스템에 적합한 활용 대상 예시
- AI 학습용 데이터셋 생성 자동화
- 품질 검사 영상 중 이상 장면만 저장
- 학교, 병원, 공공기관 영상 자동 캡처 시스템 구축
- 강의 영상 정지 화면 캡처 → 슬라이드 생성
- 게임 스트리밍 영상 → 자동 하이라이트 캡처
실무 적용 팁
- 영상 길이가 긴 경우, 프레임 추출 주기를 테스트하면서 적절히 조절하세요.
- 저장 위치는 로컬 디렉토리 외에 Google Drive, NAS, AWS S3 등 외부 저장소와 연동 가능합니다.
- 이미지 크기나 형식을 줄이면 저장 속도 및 용량 관리에 유리합니다.
반응형
'Study' 카테고리의 다른 글
밸브 기호, 눈으로 구별하는 구조 해석법 (0) | 2025.04.22 |
---|---|
순수제조 시스템 완전 가이드 7가지 종류와 구조를 알면 물이 달라진다 (0) | 2025.04.10 |
파이썬 실행 오류 해결 방법 10가지 (0) | 2025.03.07 |
반도체 공정에서 진공 펌프의 역할과 종류, 그리고 최신 기술 동향 🏭🔬 (0) | 2025.03.07 |
VLOOKUP INDEX MATCH 함수를 활용한 방법 (0) | 2025.02.28 |
댓글