카메라와 동영상 처리
카메라와 동영상처리법
- cv2.VideoCapture 클래스
-
정의: 카메라와 동영상으로부터 프레임을 받아오는 작업을 cv2.VideoCapture클래스 하나로 처림
-
과정
open() -> read() -> frame()!!
- 카메라 열기
cv2.VideoCapture(index, apiPreference=None) -> retval
- index: camera_id + domain_offset_if 시스템 기본 카메라를 기본 방법으로 열려면 index에 0을 전달
- apiPreference: 선호하는 카메라 처리 방법 지정
- retval: cv2.VideoCapture 객체
cv2.VideoCapture.open(index, apiPreference=None) -> retval
- retval: 성공하면 True, 실패하면 False
3. 동영상, 정지 영상 시퀀스, 비디오 스트림열기
cv2.VideoCapture(filename, apiPreference=None) -> retval
- filename: 비디오 파일 이름, 정지 영상 시퀀스, 비디오 스트림 URL..등
- apiPreference: 선호하는 동영상 처리 방법 지정
- retval: cv2.VideoCapture 객체
cv2.VideoCapture.open(filename, apiPreference=None) -> retval
- retval: 성공하면 True, 실패하면 False
4. 비디오 캡쳐가 준비되었는지 확인
cv2.VideoCapture.isOpened() -> retval
- retval: 성공하면 True, 실패하면 False
5. 프레임 받아오기
cv2.VideoCapture.read(image=None) -> retval, image
- retval: 성공하면 True, 실패하면 False
- image: 현재 프레임(numpy.ndarray)
6. 카메라, 비디오 장치 속성 값 참조
cv2.VideoCapture.get(propId) -> retval
- propld: 속성 상수.
- CAP_PROP_FRAME_WIDTH : 프레임 가로 크기
- CAP_PROP_FRAME_HEIGHT : 프레임 세로 크기
- CAP_PROP_FPS : 초당 프레임 수
- CAP_PROP_FRAME_COUNT : 비디오 파일의 총 프레임 수
- CAP_PROP_POS_MSEC : 밀리초 단위로 현재 위치
- CAP_PROP_POS_FRAMES : 현재 프레임 번호
- CAP_PROP_EXPOSURE : 노출
- retval: 성공하면 해당 속성 값, 실패하면 0
7. 카메라, 비디오 장치 속성 값 참조
cv2.VideoCapture.set(propId, value) -> retval
- propld: 속성 상수
- value: 속성 값
- retval: 성공하면 True, 실패하면 False
8. 카메라 처리 예제
import sys
import cv2
cap = cv2.VideoCapture(0) #기본 카메라 장치 열기
if not cap.isOpened():
print("Camera open failed!")
exit()
while True:
ret, frame = cap.read() #카메라로부터 프레임을 정상적으로 받아와 ret에는 True, frame에는 해당 프레임 저장
if not ret:
break
inversed = ~frame # 현재 프레임 반전
cv2.imshow('frame', frame)
cv2.imshow('inversed', inversed)
if cv2.waitKey(10) == 27: # 일정시간 기다린 후 다음 프레임 처리
break # ESC키 누르면 while 루프 종료
cap.release() #사용한 자원 해제
cv2.destroyAllWindows()
9. 동영상 처리 예제
cap = cv2.VideoCapture('video1.mp4')
fps = round(cap.get(cv2.CAP_PROP_FPS))
delay = round(1000 / fps)
while True:
ret, frame = cap.read()
inversed = ~frame
cv2.imshow('frame', frame)
cv2.imshow('inversed', inversed)
if cv2.waitKey(delay) == 27:
break
cap.release()
cv2.destroyAllWindows()
Author And Source
이 문제에 관하여(카메라와 동영상 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@qsdcfd/카메라와-동영상-처리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)