회원 로그인
|
OpenCV 2-1. 비디오 읽기 / 재생
https://blog.naver.com/samsjang OpenCV의 강좌를 공부 차원에서 재정리한 것입니다. |
:비디오 읽기 / 재생 / 실행 창 크기
- cv2.VideoCapture(카메라 디바이스 번호) : 카메라 정의, 기기는 0부터 시작
- cv2.VideoCapture.set(속성, 값) : 비디오 속성(0~18) 및 값 설정
- 속성 3 : width
- 속성 4 : height
- cv2.VideoCapture.read() : 재생된 비디오 한 프레임씩 읽기
- cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) : 흑백으로 변환
- cv2.VideoCapture.release() : 카메라 해제하기
# -*- coding: utf-8 -*- # opencv_004.py # https://blog.naver.com/samsjang/220500854338 import cv2 def showVideo(): try: print('카메라를 구동합니다.') # 비디오 객체 생성 # VideoCapture() 인자로는 장치 인덱스 또는 비디오 파일명을 지정하면 재생한다. # 장치 인덱스(카메라 구동) : 카메라가 한대이면 0, 두대이면 0, 1 ... # 비디오 파일명(재생) : cap = cv2.VideoCapture('video.mp4') cap = cv2.VideoCapture(0) except: print('카메라 구동 실패') return """ cap.get() 함수를 이용하면 비디오와 관련된 다양한 속성값을 얻을 수 있다. 인자는 비디오 속성값 ID이며 숫자로 0~18까지 예) 비디오의 폭(width)과 높이(height)를 구하고 싶다면 cap.get(3), cap.get(4) 비디오를 설정하려면 cap.set() 사용 예) 비디오의 폭 480과 높이 320를 설정하려면 아래 코드 """ cap.set(3, 480) cap.set(4, 320) while True: # cap.read() : 재생된느 비디오의 한 프레임씩 읽기 # 비디오 프레임을 제대로 읽고 있다면 ret 값이 True가 되고, 실패하면 False # ret 값을 체크하여 프레임을 제대로 읽는지 확인 가능 """ 가끔 cap(비디오 객체)이 제대로 초기화되지 않을 수 있는데, 이때 에러코드 리턴. cap.isOpened() 함수를 이용해 cap이 초기화가 제대로 되어 있는지 확인 가능 만약 cap.isOpened()가 False면 cap.open() 함수를 이용해 오픈하면 됨 """ ret, frame = cap.read() if not ret: print('비디오 읽기 오류') break # frame을 흑백으로 변환 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 흑백으로 변환한 프레임을 화면에 출력 """ 프레임을 시간에 따라 연속으로 화면에 보여주는 것으로 하나의 프레임은 하나의 이미지 그러므로 cv2.imshow() 함수를 그대로 사용 """ cv2.imshow('video', gray) k = cv2.waitKey(1) & 0xFF if k == 27: break # 비디오 객체는 반드시 cap.release() 함수로 해제 cap.release() # 윈도우 종료 cv2.destroyAllWindows() showVideo()
댓글 0개
| 엮인글 0개
285개(1/15페이지)
번호 | 제목 | 글쓴이 | 조회 | 날짜 |
---|---|---|---|---|
285 | [Python] 동적 import - 모듈을 변수로 받아오기 | 푸딩뱃살 | 414 | 2022.10.27 10:45 |
284 | [Python] 파이썬 3.7.7과 3.9.7의 os.path.expanduser() 차이 | 푸딩뱃살 | 457 | 2022.08.18 12:22 |
283 | [Python] error: Microsoft Visual C++ 9.0 is required. | 푸딩뱃살 | 687 | 2022.08.03 13:35 |
282 | [Python] pyscript | 푸딩뱃살 | 457 | 2022.06.09 11:21 |
281 | [Python] float is / float not is | 푸딩뱃살 | 596 | 2022.03.02 15:03 |
280 | [Python] 이터널 문자열 f | 푸딩뱃살 | 835 | 2022.01.27 16:35 |
279 | [Python] is와 ==의 차이 | 푸딩뱃살 | 486 | 2021.11.25 15:54 |
278 |
[Python] Error: ImportError: file |
푸딩뱃살 | 920 | 2021.11.16 11:24 |
277 | [Python] 파이썬 디컴파일 - uncompyle6 | 푸딩뱃살 | 776 | 2021.11.10 14:46 |
276 | [Python] 파이썬 확장자 설명 | 푸딩뱃살 | 551 | 2021.11.03 14:38 |
275 | [참고] 웹 fbx 뷰어 | 푸딩뱃살 | 472 | 2021.10.19 15:46 |
274 | [Python] enumerate() | 푸딩뱃살 | 501 | 2021.10.13 14:44 |
273 | [Python] 아나콘다에서 가상 환경 | 푸딩뱃살 | 724 | 2020.11.21 00:26 |
272 | [Python] pip로 설치 때 퍼미션 에러 | 푸딩뱃살 | 1269 | 2020.06.06 17:13 |
271 | [Python] OpenCV 10-3. 이미지 Thresholding - Otsu's Binarizatio | 푸딩뱃살 | 675 | 2020.06.05 14:01 |
270 | [Python] OpenCV 10-2. 이미지 Thresholding - Adaptive Threshold | 푸딩뱃살 | 697 | 2020.06.05 13:58 |
269 | [Python] OpenCV 10-1. 이미지 Thresholding | 푸딩뱃살 | 579 | 2020.06.05 13:56 |
268 | [Python] OpenCV 9-2. 색 추적 | 푸딩뱃살 | 775 | 2020.06.02 23:29 |
267 | [Python] OpenCV 9-1. 색공간 바꾸기 | 푸딩뱃살 | 642 | 2020.06.02 23:27 |
266 | [Python] OpenCV 8-3. 이미지 비트 연산 | 푸딩뱃살 | 531 | 2020.06.02 23:21 |