소개
cv2.VideoCapture는 OpenCV에서 비디오 파일 또는 카메라 스트림을 읽기 위한 함수입니다. 이 함수는 비디오 파일에서 프레임을 추출하거나, 실시간 카메라 입력을 받아 처리할 수 있는 기능을 제공합니다. 컴퓨터 비전 프로젝트에서 비디오 데이터를 다룰 때 필수적인 함수로, 객체 감지, 동작 분석, 비디오 처리 등 다양한 작업에 활용됩니다.
기본 사용법
# 기본 사용법 (비디오 파일 읽기)
import cv2
# 비디오 파일 열기
video = cv2.VideoCapture('input_video.mp4')
# 비디오 프레임 읽기
while video.isOpened():
ret, frame = video.read()
if not ret:
break
# 프레임을 화면에 표시
cv2.imshow('Video Frame', frame)
# 'q' 키를 누르면 루프 종료
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 모든 창 닫기 및 리소스 해제
video.release()
cv2.destroyAllWindows()
# 기본 사용법 (카메라 스트림 읽기)
import cv2
# 기본 카메라 열기 (카메라 ID 0)
video = cv2.VideoCapture(0)
# 카메라 프레임 읽기
while video.isOpened():
ret, frame = video.read()
if not ret:
break
# 프레임을 화면에 표시
cv2.imshow('Camera Frame', frame)
# 'q' 키를 누르면 루프 종료
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 리소스 해제 및 창 닫기
video.release()
cv2.destroyAllWindows()
상세 설명
- 비디오 파일 또는 카메라 입력
- cv2.VideoCapture는 비디오 파일 경로 또는 카메라 ID(예: 0 또는 1)를 인수로 받아 비디오 스트림을 열 수 있습니다. 카메라 ID는 사용 중인 시스템에 연결된 카메라의 순서에 따라 달라질 수 있습니다.
- 프레임 읽기
- read() 함수는 비디오 스트림에서 각 프레임을 읽습니다. ret은 프레임을 제대로 읽었는지를 나타내는 불리언 값이고, frame은 현재 프레임의 이미지를 나타냅니다. 더 이상 읽을 프레임이 없을 때 ret은 False를 반환합니다.
- 리소스 해제
- 비디오 캡처 작업이 끝나면 release() 함수로 자원을 해제하고, 모든 창을 닫기 위해 cv2.destroyAllWindows()를 호출해야 합니다.
- 활용
- 실시간 비디오 처리: 객체 감지, 동작 추적, 또는 컴퓨터 비전 프로젝트에서 실시간 비디오 스트림을 받아 처리하는 데 사용됩니다.
- 프레임 분석: 비디오의 각 프레임을 개별적으로 분석하여 이미지 처리, 필터링, 또는 분석 작업을 수행할 수 있습니다.
라이센스
OpenCV 4.4.0 까지는 3-clause BSD license를 따르고 있으며 자유롭게 사용, 수정, 배포할 수 있으며, 상업적 목적으로도 사용할 수 있습니다.
OpenCV 4.5.0 이상 부터는 Apache 2 License를 따르고 있습니다. 해당 라이선스는 사용, 수정, 배포, 상업적 이용을 자유롭게 허용하며, 사용자가 해당 소프트웨어의 기여자에 대한 특허 청구를 방지하도록 명시하는 것을 특징으로 합니다. 또한 수정된 코드를 배포할 때 변경 사항을 고지해야 하며, 특허 분쟁 시 관련 권리를 상실할 수 있습니다.
관련 내용
[OpenCV] 비디오 생성 및 저장하기: cv2.VideoWriter() 사용 및 설명
[OpenCV] 카메라 및 비디오 파일에서 프레임 읽기: cv2.VideoCapture() 사용 및 설명
[OpenCV] 이미지의 엣지를 보호하며 부드럽게: cv2.medianBlur() 사용 및 설명
[OpenCV] 이미지 흐리게 만들기: cv2.GaussianBlur() 사용 및 설명
[OpenCV] 이미지 색상 공간 변환: cv2.cvtColor() 사용 및 설명
[OpenCV] 이미지 축소: cv2.pyrDown() 사용 및 설명
[OpenCV] 이미지 확대: cv2.pyrUp() 사용 및 설명
[OpenCV] 원 찾기: cv2.HoughCircles() 사용 및 설명
[OpenCV] 직선 찾기: cv2.HoughLines() 사용 및 설명
[OpenCV] 경계선 찾기: cv2.Canny() 사용 및 설명
[OpenCV] 적응형 임계값 처리하기: cv2.adaptiveThreshold() 사용 및 설명
[OpenCV] 이미지 임계값 처리: cv2.threshold() 사용 및 설명
[OpenCV] 이미지의 원근 변환: cv2.warpPerspective() 사용 및 설명
[OpenCV] 이미지 기하학적 변환: cv2.warpAffine() 사용 및 설명
[OpenCV] 이미지 좌우, 상하 반전하기: cv2.flip() 사용 및 설명
[OpenCV] 이미지 회전: cv2.rotate() 사용 및 설명
[OpenCV] 이미지 크기 조절: cv2.resize() 사용 및 설명
[OpenCV] 이미지 팽창하기: cv2.dilate() 사용 및 설명
[OpenCV] 이미지 침식하기: cv2.erode() 사용 및 설명
[OpenCV] 이미지 블렌딩하기: cv2.addWeighted() 사용 및 설명
[OpenCV] 이미지 간 빼기: cv2.subtract 사용법() 사용 및 설명
[OpenCV] 이미지 간 더하기: cv2.add() 사용 및 설명
[OpenCV] 이미지에 다각형 그리기: cv2.polylines() 사용 및 설명
[OpenCV] 이미지에 원 그리기: cv2.circle() 사용 및 설명
[OpenCV] 이미지에 사각형 그리기: cv2.rectangle() 사용 및 설명
[OpenCV] 이미지에 선 그리기: cv2.line 사용법() 사용 및 설명
[OpenCV] 이미지에 텍스트 추가하기: cv2.putText() 사용 및 설명
[OpenCV] 이미지 창에 표시하기: cv2.imshow() 사용 및 설명
'함수 설명 > 컴퓨터 비전 (OpenCV, PIL)' 카테고리의 다른 글
[PIL] 이미지 파일 열기: Image.open() 사용 및 설명 (0) | 2024.10.13 |
---|---|
[OpenCV] 비디오 생성 및 저장하기: cv2.VideoWriter() 사용 및 설명 (0) | 2024.09.29 |
[OpenCV] 이미지의 엣지를 보호하며 부드럽게: cv2.medianBlur() 사용 및 설명 (0) | 2024.09.29 |
[OpenCV] 이미지 흐리게 만들기: cv2.GaussianBlur() 사용 및 설명 (0) | 2024.09.29 |
[OpenCV] 이미지 색상 공간 변환: cv2.cvtColor() 사용 및 설명 (0) | 2024.09.29 |