이번에는 캠을 이용해서 영상을 저장하는 것을 해보았다.
영상을 저장하고 불러와서 재생시키는것!
1. cv2.VideoCapture(0)
- 비디오 객체 생성
- 인자 : 어떤 카메라를 사용할건지 ( 카메라가 2개라면 첫번째 웹캠은 0, 두번째 웹캠은 1로 지정가능 ) 또는 비디오 파일 이름을 지정
- 언제 사용하는지?
- 카메라에서 영상을 가져올때
- 동영상 파일을 읽어올때
- youtube 영상을 가져올대
- web 영상을 받아올때
2. VideoCapture.Set
비디오 프레임 가로 세로 길이 지정
cap.set(3, 1280) -> 3이 가로라는 의미, 1280 은 가로 길이
cap.set(4,720) -> 4가 세로라는 의미, 720은 세로길이
3. VideoCaputre.read()
재생되는 비디오를 한 프레임씩 읽어들이는 함수.
retval : 비디오 값을 제대로 읽어오는지 참과 거짓 값으로 받아오는 변수
while문 안에서 키보드 입력을 기다리며 계속 read 하기.
4. VideoCapture.release()
오픈한 비디오캡쳐 객체를 release() 메소드를 사용해서 파일 닫아주기
<캠을 재생하는 코드>
만약 실시간 영상이 아니라 저장된 파일을 불러오고싶다면
함수 파라미터에 비디오 파일을 받아올 변수 이름을 써주고
VideoCapture('파일이름') 형식으로 불러오면 된다.

5. cv2.VideoWrite(filename, fourcc,fps,frameSize)
비디오 녹화하고 저장하는 함수
- outputFile (str) – 저장될 파일명
- fourcc – Codec정보. cv2.VideoWriter_fourcc()
- frame (float) – 초당 저장될 frame
- size (list) – 저장될 사이즈(ex; 640, 480)
6. VideoWrite.write 객체
write메소드에 인자로 프레임 이미지를 전달하면 객체를 생성할 때 설정한 그대로 파일이 생성되며
그 파일에 프레임 이미지가 저장됨.
7. 대칭 flip
read 메소드로 읽은 후 flip 코드를 적용시키면 이미지가 좌우 반전되어 읽혀짐.

# 이슈사항
키보드 입력을 받아오는 waitKey(1) 부분이 기존에는 0으로 설정이 되어있었다.
0으로 설정된 상태에서는 캠에서 녹화되는 거 같지가 않고 키보드 입력을 했을때에만 캡쳐 형식으로
이미지가 저장이 되는 현상이 발생했다.
비디오 형태가 아니라 움짤처럼?
그래서 찾아보니까 while문 안에서 키보드 입력을 무한대기 하고있기때문에
엔터키를 누르거나 키보드 입력이 있었을때 프레임을 저장하게 되는 거였다.
그래서 1ms 대기하도록 설정을 하니까 프레임이 영상형태로 잘 저장이 되었다.
writeVideo() # 비디오가 저장됨
readVideo('mycam.mp4') #저장된 비디오 불러오기
'Data Science > 2) Open CV' 카테고리의 다른 글
[Python]OpenCV 마우스 이벤트로 ROI 지정 (0) | 2021.12.05 |
---|---|
[Python]OpenCV 캔버스에 도형그리기, 마우스로 도형그리기 (0) | 2021.12.04 |
[Python]Open CV 이미지 처리 자세히 알아보기 (0) | 2021.12.03 |
[Python] OpenCV ROI 처리 해보기 (0) | 2021.12.02 |
[Python] Open CV 시작해보기 (0) | 2021.12.02 |