[OpenCV] 실시간 카메라 출력 기초
안녕하세요, OpenCV 공부 2일차입니다!
Computer Vision은 실시간으로 영상을 처리하는 것이 굉장히 중요한데, 오늘은 화면을 통해 영상을 받아 보는 코드를 작성해보았습니다.
먼저, 전체 코드 입니다.
import cv2
# Camera
capture = cv2.VideoCapture(0)
capture.set(cv2.CAP_PROP_FRAME_WIDTH,640)
capture.set(cv2.CAP_PROP_FRAME_WIDTH,480)
while cv2.waitKey(33) < 0 :
# 33ms마다 반복문을 실행
ret, frame = capture.read() # ret:camera 이상 여부, frame : 현재 시점의 frame
cv2.imshow("VideoFrame", frame)
print(cv2.waitKey(33))
capture.release()
cv2.destroyAllWindows()
코드를 천천히 분석해보면,
capture = cv2.VideoCapture(0)
capture.set(cv2.CAP_PROP_FRAME_WIDTH,640)
capture.set(cv2.CAP_PROP_FRAME_WIDTH,480)
이 세 줄은 카메라를 불러오는 과정입니다.
cv2.VideoCapture(Camer Number) : 이 명령어는 카메라를 불러오는 과정입니다. 대부분의 노트북에는 웹캠이 0번으로 설정되어있습니다. 만약에 카메라를 추가한다면, 1번 카메라,2번 카메라... 으로 되겠죠
capture.set(cv2.CAP_PROP_FRAME_WIDTH,640)
capture.set(cv2.CAP_PROP_FRAME_WIDTH,480)
: 이 두 명령어는 프래임의 높이와 너비를 설정해주는 함수입니다.
cv2.waitKey(33) : 이 명령어는 33ms(1초당 33번의 프레임을받는다)속도로 -1을 반환합니다. 이 때, 키보드에서 아무 키나 입력을 받으면 양수를 반환합니다. 따라서 while문은 33ms 속도로 계속해서 반복하다가 다른 키를 누르면 종료가 됩니다.
ret, frame = capture.read() : 화면을 읽습니다. 이 함수는 두 개의 변수를 반환하는데, ret은 카메라가 정상작동한다면 1을 반환합니다. frame은 말 대로 frame을 반환합니다.
cv2.imshow("VideoFrame", frame) : "VideoFrame"이라는 창 이름으로 frame을 출력합니다.
capture.release() : 카메라의 리소스를 해제합니다. 카메라를 정상적으로 종료시키는 역할을 수행합니다.
cv2.destroyAllWindows() : 모든 OpenCV 창을 닫습니다.