안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.
코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.
업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART)나 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.
시작하기에 앞서, OpenCV 라이브러리는 쥬피터 노트북에서 한줄한줄 실행하기 보다는 그냥 파이썬 파일(.py)에서 전체 코드를 실행하시는 것을 추천드립니다. imshow( )로 창을 띄우고 종료할 때 자꾸 파이썬 인터프리터가 먹통이 되더라구요.
참고로 이번 시간에는 카메라가 내장된 노트북이나 별도의 웹캠이 없으시다면 실습이 어렵답니다.
일단은 여러분들이 노트북을 가지고 코딩공부를 하고 계신다는 가정 하에 글을 작성하겠습니다.
1. OpenCV로 내장 카메라 영상 출력하기
이번 시간 가장 처음배워볼 것은 카메라 영상을 받아서 모니터에 띄워보는 것입니다.
복잡한 설명 없이 바로 코드를 실행해보겠습니다.
<코드>
# step1.opencv 라이브러리 불러오기
import cv2
# step2.카메라 열기 - 0은 기본 카메라를 의미
cap = cv2.VideoCapture(0)
# step3.무한 반복
while True:
# 카메라 연결 여부(True/False)와 현재 프레임 이미지를 읽음
retval, frame = cap.read()
# 만약 카메라가 연결되어 있지 않으면 while 반복문 종료
if retval == False:
break
# 'frame'이란 창 이름으로 현재 프레임 출력
cv2.imshow('frame', frame)
# 10초가 지나거나, ESC 키가 입력되면 while 반복문 종료
if cv2.waitKey(10) == 27:
break
# step4.카메라 닫고 모든창 종료
cap.release()
cv2.destroyAllWindows()
<실행 결과>
OpenCV에서는 카메라 영상과 이어서 배울 동영상 파일로부터 프레임(frame)을 받아오는 작업을 cv2.VideoCapture 클래스 하나로 처리합니다.
위의 코드에서는 cap이라는 변수로 cv2.VideoCapture 클래스를 객체화 해서 while 반복문 안에서 사용하고 있는 것을 보실 수 있을거예요.
참고로 cv2.VideoCapture(0)의 0은 기본 카메라를 의미하기 때문에 카메라가 한 대라면 그냥 고민 없이 0을 넣어 주시면 되고, 카메라가 두 대 이상이라면 장치관리자 표시되는 순서대로 1, 2를 입력해주시면 됩니다.
2. OpenCV로 동영상 파일 재생하기
위에서 말씀드렸 듯이 OpenCV를 이용해서 동영상 파일을 열 때도 cv2.VideoCapture 클래스를 이용합니다.
차이점은 cv2.VideoCapture( ) 안에 0 대신에 파일명을 넣어주면 됩니다.
아무 영상이나 아래의 사이트에서 다운로드 받으신 후에 적당한 파일명으로 저장해주세요. 물론 저장위치는 현재 작업경로에 넣어주시면 코딩하기 제일 편합니다.
픽사베이: https://pixabay.com/ko/videos/
저는 귀여운 하이랜드 소의 영상을 다운로드 받았습니다.
이번에도 코드를 먼저 보시겠습니다.
만약 동영상을 그대로 재생하고 싶으시다면 방금 전 봤던 코드에서 한 줄만 바꿔주면 됩니다. 실행결과는 생략하도록 하겠습니다.
<코드>
# step1.opencv 라이브러리 불러오기
import cv2
# step2.동영상 파일 열기
cap = cv2.VideoCapture('하이랜드 소.mp4')
# step3.무한 반복
while True:
# 동영상 파일 존재 여부(True/False)와 현재 프레임 이미지를 읽음
retval, frame = cap.read()
# 만약 동영상 파일이 존재하지 않으면 while 반복문 종료
if retval == False:
break
# 'frame'이란 창 이름으로 현재 프레임 출력
cv2.imshow('frame', frame)
# 10초가 지나거나, ESC 키가 입력되면 while 반복문 종료
if cv2.waitKey(10) == 27:
break
# step4.동영상 파일 닫고 모든창 종료
cap.release()
cv2.destroyAllWindows()
3. 영상의 기본 정보 가져오기
이번에는 영상의 정보(영상의 프레임 사이즈, 전체 프레임수, FPS 등)를 가져오는 것을 배워보겠습니다. 이 내용은 카메라 영상과 동영상 파일 모두 적용 가능하지만, 저는 동영상 파일을 가지고 진행해보겠습니다.
<코드>
# step1.opencv 라이브러리 불러오기
import cv2
# step2.영상 파일 열기
cap = cv2.VideoCapture('하이랜드 소.mp4')
# step3.영상의 가로, 세로 사이즈, 전체 프레임수, FPS 등을 출력
print('Frame width:', int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)))
print('Frame height:', int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
print('Frame count:', int(cap.get(cv2.CAP_PROP_FRAME_COUNT)))
print('FPS:', cap.get(cv2.CAP_PROP_FPS))
# step4.영상 닫고 모든창 종료
cap.release()
<실행결과>
더 많은 영상 정보는 아래의 OpenCV 공식 사이트를 참고하셔서 get( ) 괄호 안만 바꿔주시면 됩니다.
OpenCV: Flags for video I/O
enum cv::VideoCaptureAPIs { cv::CAP_ANY = 0, cv::CAP_VFW = 200, cv::CAP_V4L = 200, cv::CAP_V4L2 = CAP_V4L, cv::CAP_FIREWIRE = 300, cv::CAP_FIREWARE = CAP_FIREWIRE, cv::CAP_IEEE1394 = CAP_FIREWIRE, cv::CAP_DC1394 = CAP_FIRE
docs.opencv.org
오늘 준비한 내용은 여기까지입니다.
감사합니다.
<참고 자료>
패스트 캠퍼스 강의_OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지 Online
'파이썬 패키지 > 이미지 처리' 카테고리의 다른 글
[#shorts] 컴퓨터 비전으로 무엇을 할 수 있을까? (0) | 2022.02.16 |
---|---|
[Python/OpenCV] 파이썬으로 컴퓨터 비전 시작하기 4편. 두 개의 이미지를 더하고 빼는 법, 이미지 밝기 조절 방법 (0) | 2022.02.13 |
[Python/OpenCV] 파이썬으로 컴퓨터 비전 시작하기 2편. 이미지 속성 가져오는 방법과 numpy로 이미지 생성하기 (0) | 2022.02.08 |
[Python/OpenCV] 파이썬으로 컴퓨터 비전 시작하기 1편. OpenCV 설치 및 사진 불러오기 (1) | 2022.01.13 |
[Python/Pillow] 파이썬 이미징 라이브러리(PIL)_5편.폴더 내의 이미지 파일에 한꺼번에 워터마크 넣기 (0) | 2021.11.12 |