Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- 포인터
- 유도클래스
- 깊은복사
- 인프런
- 스택
- 동적바인딩
- STL
- 상속
- 참조자
- 주피터
- 다형성
- 프로그래머스lv2
- python
- 연산자오버로딩
- 점프투파이썬
- 제네릭프로그래밍
- C++
- 코드잇
- 람다식
- 11382번
- c++코딩테스트합격자되기
- 멤버함수로구현
- 코딩테스트
- 기본클래스
- 데이터사이언스
- 백준
- OOP
- 얕은복사
- list comprehension
- OpenCV
Archives
- Today
- Total
WjExplor Story
3. 비디오 프레임 캡쳐 및 표시 본문
1. 비디오의 구조 이해
- 비디오란 여러 장의 프레임(frame) 이 연속해서 이어진 것으로, 이를 통해 움직임이 만들어집니다.
- 프레임은 비디오에서 하나의 이미지 단위입니다.
2. 주요 함수 및 역할
| 함수 | 설명 |
| cv2.VideoCapture(device) | 웹캠(예: 0, 1 등)에서 비디오를 읽어옴 |
| cv2.VideoCapture(filename) | 파일 경로에서 비디오 읽기 |
| cv2.VideoCapture.read(img) | 다음 프레임을 디코딩하여 (retval, img) 형태로 반환 |
| cv2.VideoCapture.grab() / cv2.VideoCapture.retrieve(img) |
프레임을 하나씩 받아오는 방식으로, read()와 비슷한 역할을 함 |
| cv2.VideoCapture.release() | 비디오 캡처 장치를 해제하여 리소스를 반환 |
| cv2.VideoCapture.set() / cv2.VideoCapture.set(propId, value) |
프레임 사이즈, 프레임 속도 등 비디오 속성 설정 |
3. 예제 코드
import cv2
cap2 = cv2.VideoCapture(0, cv2.CAP_DSHOW)
# 0번 카메라에서 비디오를 불러온다
cap = cv2.VideoCapture('./data/vtest.avi')
#data 폴더에서 vtest.avi 비디오를 불러온다
# cap 에 저장된 비디오로부터 높이와 너비정보를 저장한다.
frame_size = (int(cap2.get(cv2.CAP_PROP_FRAME_HEIGHT)), # cap 에 저장된 비디오 프레임의 높이 정보를 불러온다
int(cap2.get(cv2.CAP_PROP_FRAME_WIDTH))
) # cap 에 저장된 비디오 프레임의 너비 정보를 불러온다
print('frame_size = ', frame_size)
while True:
retval, frame = cap2.read()
# cap 에 저장된 동영상의 프레임을 불러온다
# retval 은 불러올 비디오가 없을 시 Bool 자료형인 False 를 반환한다
if not retval:
print("웹캠에서 프레임을 가져올 수 없습니다")
break
cv2.imshow('frame',frame)
key = cv2.waitKey(25)
if key==27: # ESC 누르면 종료
break
# 루프 밖에서 해제해야 함
if cap2.isOpened():
cap2.release()
cv2.destroyAllWindows()
- VideoCapture(0, cv2.CAP_DSHOW) → 로컬 웹캠에서 영상을 가져오기
- cap.read() → 프레임을 순차적으로 읽어옴 (retval이 False면 종료)
- cv2.imshow() → 프레임을 화면에 출력
- cv2.waitKey(25) → 약 25ms 대기하며 입력 키 확인 (ESC 종료)
- release() → 캡처 장치 정상 종료
- destroyAllWindows() → 모든 창 닫기
4. cap.release()의 중요성
- 웹캠 등 캡처 장치가 계속 동작 중이면 다른 프로세스가 해당 장치에 접근할 수 없습니다.
- cap.release()를 호출해 장치를 해제하면, 렌즈 옆 LED가 꺼지는 등 장치 사용이 종료됨을 확인할 수 있습니다.
출처 : https://kali-live.tistory.com/8
OpenCV2 강좌 3 - 비디오 프레임 캡처 및 표시
저번 강의에서는 이미지 파일을 입출력을 배웠습니다. 이번 시간에는 동영상의 입출력에 대해 배워볼까 합니다. 비디오란? 비디오를 다루려면 비디오에 대한 구성을 알고 있어야 합니다. 비디
kali-live.tistory.com
'Python > Python : Opencv Study' 카테고리의 다른 글
| 허프(Hough) 변환 (2) | 2025.09.11 |
|---|---|
| 4. 도형 그리기 (5) | 2025.08.07 |
| 2. 영상 입출력과 Display (1) | 2025.08.07 |