2-5. 카메라와 동영상 처리하기1
cv2.VideoCapture
OpenCV에서 카메라와 동영상으로부터 프레임(frame)을 받아오는 작업을 한번에 처리할 수 있는 클래스
아래 표는 cv2.VideoCaputre 클래스 내 주요하게 쓰이는 함수들의 목록과 설명이다.
| 함수 | 인자 | 설명 |
| cv2.VideoCapture(index, apiPreference) -> cv2.VideoCapture 객체 | index: camera_id + domain_offset_id (시스템 기본 카메라 + 기본 방법 -> 0) apiPreference: 선호하는 카메라 처리 방법 |
카메라 열기 |
| cv2.VideoCapture.open(index, apiPreference) -> Boolean | ||
| cv2.VideoCapture(filename, apiPreference) -> cv2.VideoCapture 객체 | filename: 비디어 파일 이름, 정지 영상 시퀀스, 비디오 스트림 url 등 apiPreference: 선호하는 동영상 처리 방법 |
동영상, 정지 영상 시퀀스, 비디오 스트림 열기 |
| cv2.VideoCapture.open(filename, apiPreference) -> Boolean | ||
| cv2.VideoCapture.isOpened() -> Boolean | 비디오 캡쳐가 준비 확인 | |
| cv2.VideoCaputre.read(image=None) -> Boolean, image | image: numpy.ndarray 형식 영상 | 프레임 받아오기 |
| cv2.VideoCapture.get(propId) -> 속성 값 or 0(실패) | *propId: 속성 상수 | 카메라, 비디오 장치 속성 값 받기 |
| cv2.VideoCapture.set(propId, value) -> Boolean | *propId: 속성 상수 value: 속성 값 |
카메라, 비디오 장치 속성 값 정하기 |
이 외 grab()/retrieve(), release() 등의 함수들이 더 있다.
*propId(속성 상수)의 경우 OpenCV에서 제공하는 VideoCaputreProperties를 둘러봐야한다. (여기 참조) 아래 그림은 강의에서 제공해준 기본적인 속성들 리스트이다.

아래 코드는 카메라 처리하기 위한 코드 순서를 주석으로 작성한 내용이다. 강의 영상에서는 OpenCV에서 제공하는 윤곽선 따는 함수로 예제를 보여주셨다.
# import sys
# import OpenCV
# 기본 카메라 장치 열기 (속성 x)
# 카메라 장치가 잘 열렸는지 확인
# 안열렸으면 오류 메세지 출력 후 시스템 종료
# Inifinte Loop
# 카메라로부터 프레임 받아오기 (받아온 여부 확인용 Boolean 값과 받아온 프레임 영상을 저장)
# Boolean 값 확인
# 받아오지 못했다면 오류 메세지 출력 후 Loop 탈출
# 현재 프레임에 ~ 사용해 반전 프레임 생성
# 기존 프레임 출력
# 반전 프레임 출력
# 일정시간 동안 ESC 키가 눌리나 확인
# 눌리면 Loop 탈출
# 사용한 자원 해제 (cv2.VideoCapture.release() 함수 사용)
# 모든 창 닫기
카메라 장치를 열러고 하니 글쓴이의 PC에는 카메라가 연결이 안되어 있어서 error 메세지를 보았다.
만약 잘 열렸다면 get() 함수를 사용해 fps 라던가 delay 등을 확인 해 볼 수 있다. propId의 경우 사용하는 카메라나 카메라 라이브러리가 그 속성 정보를 제공해야만 사용할 수 있으므로 테스트가 많이 팔요하다.
그래서 전에 학습 인증 용으로 찍어두었던 동영상을 사용하여 예제 코드를 테스트 해 보았다.
동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.
인증 타임
PC의 경우 카메라가 없어서 테스트 해보지 못한게 좀 아쉽다. 노트북은 기본 카메라가 내장 되어 있으니 나중에 테스트 해봐야 겠다. OpenCV에서 많은 영상 편집 함수를 제공하는지 Canny 함수 적용 된 모습을 강의에서 보여주셨는데 평소 카메라 어플에서 많이 보던 윤곽선 따는 듯한 모습을 볼 수 있어서 흥미로웠다. 편집 관련 함수도 나중에 더 설명해 주신다고 하시는데 어떤 것들이 있을지 기대된다.

#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지 Online
패스트캠퍼스(FastCampus) 강의 둘러보러 가기
↓ ↓ ↓
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'남돈내배 > 2022_FastCampus_환급이벤트' 카테고리의 다른 글
| 패스트캠퍼스 챌린지 13일차 - Ch2. OpenCV-Python 기초 사용법 (0) | 2022.02.05 |
|---|---|
| 패스트캠퍼스 챌린지 12일차 - Ch2. OpenCV-Python 기초 사용법 (0) | 2022.02.04 |
| 패스트캠퍼스 챌린지 10일차 - Ch2. OpenCV-Python 기초 사용법 (0) | 2022.02.02 |
| 패스트캠퍼스 챌린지 09일차 - Ch2. OpenCV-Python 기초 사용법 (0) | 2022.02.01 |
| 패스트캠퍼스 챌린지 08일차 - Ch2. OpenCV-Python 기초 사용법 (0) | 2022.01.31 |