- v2.VideoCapture 클래스
- OpenCV 에서는 카메라와 동영상으로부터 프레임 ( 을 받아오는 작업을 cv2.VideoCapture 클래스 하나로 처리함

- 카메라 열기
| cv2.Videocapture(index,apiPreference=None) -> retva |
• index: camera_id + domain_offset_id 시스템 기본 카메라를 기본 방법으로 열려면 index 에 0 을 전달
• apiPreference : 선호하는 카메라 처리 방법을 지정
• retval: cv2.VideoCapture 객체
| cv2.VideoCapture.open(index,apiPreference=None) ->retval |
retval: 성공하면 True, 실패하면 False
- 동영상, 정지영상 시퀀스, 비디오 스트림 열기
| cv2.VideoCapture(filename,apiPreference=None) ->retval |
- 비디오 캡쳐가 준비되었는지 확인
| cv2.VideoCapture.isOpened() -> retval |
- 프레임 받아오기
cv2.VideoCapture.read(image=None) -> retval, image
• retval : 성공하면 True, 실패하면 False.
• image: 현재 프레임 (numpy.ndarray)
- 카메라, 비디오 장치 속성 값 참조
| cv2.VideoCapture.get(propId) -> retval |

| cv2.VideoCapture(propId,value) ->retval |
• propId : 속성 상수
• value: 속성 값
• retval: 성공하면 True, 실패하면 False.
- 카메라 처리 예제
| import sys import cv2 ''' 카메라 열기 cap = cv2.VideoCapture() cap.open(0) ''' cap=cv2.VideoCapture('video1.mp4') # cap=cv2.VideoCapture(0) if not cap.isOpened(): print('camera open failed!') sys.exit() w= cap.get(cv2.CAP_PROP_FRAME_WIDTH) h=cap.get(cv2.CAP_PROP_FRAME_HEIGHT) print(w,h) ''' 카메라 장치 사이즈 세팅 cap.set(cv2.CAP_PROP_FRAME_WIDTH,320) cap.set(cv2.CAP_PROP_FRAME_HEIGHT,240) ''' while True: ret,frame=cap.read() #순서 중요 if not ret: break edge=cv2.Canny(frame,50,150) #윤곽선 저장 cv2.imshow('frame',frame) cv2.imshow('edge',edge) if cv2.waitKey(20)==27: break cap.relase() cv2.destroyAllWindows() |
- cv2.VideoWriter 클래스
• OpenCV 에서는 cv2.VideoWriter 클래스를 이용하여 일련의 프레임을 동영상 파일로 저장할 수 있음
• 일련의 프레임은 모두 크기와 데이터 타입이 같아야 함
- Fourcc (4-문자 코드, four character code)

- 저장을 위한 동영상 파일 열기
| cv2.VideoWriter(filename,fourcc,fps,frameSize,isColor=None) -> retval |
- fps: 초당 프레임수 ex)30
- framsize: 프레임 크기 (width, height) 튜플
- isColor: 컬러영상이면 True, 그렇지않으면 False
- retval: cv2.VideoWriter 객체
- 프레임 저장하기
| cv2.VideoWriter.write(image) -> None |
• image: 저장할 프레임 (numpy.ndarray)
- 웹카메라 입력을 동영상으로 저장하기
| import sys import cv2 cap=cv2.VideoCapture(0) if not cap.isOpened(): print('Camer open failed!') sys.exit() w=round(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) h=round(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) fps=cap.get(cv2.CAP_PROP_FPS) fourcc=cv2.VideoWriter_fourcc(*'DIVX') #*'DIVX' = 'D','I','V','X' delay=round(1000/fps) #한 프레임과 다음 프레임 사이의 시간(ms) out=cv2.VideoWriter('output.avi',fourcc,fps,(w,h)) if not out.isOpened(): print('File open failed!') cap.release() sys.exit() while True: ret,frame=cap.read() if not ret: break # inversed=~frame #좌우반전 edge=cv2.Canny(frame,50,150) edge_color=cv2.cvtColor(edge,cv2.COLOR_GRAY2BGR) #videowritter 객체는 컬러영상을 저장하도록 만들었기 때문에 out.write(edge_color) cv2.imshow('frame',frame) cv2.imshow('edge',edge) cv2.imshow('edge_color',edge_color) if cv2.waitKey(delay)==27: break cap.release() out.release() cv2.destroyAllWindows() |
'Development > Python' 카테고리의 다른 글
| 파이썬 % // -> ** @ 등 파이썬 기호 완벽정리 (0) | 2023.08.17 |
|---|---|
| openCV-Python 기초 사용법 -4- OpenCV 그리기 함수 (0) | 2023.08.04 |
| openCV-Python 기초 사용법 -2- 영상의 생성, 복사, 부분 영상 추출 (0) | 2023.08.04 |
| openCV-Python 기초 사용법 -1- 영상의 속성과 픽셀 값 참조 (0) | 2023.08.04 |
| OpenCV-Python 명령어 정리 (1 ~ 15) (0) | 2023.08.04 |