본문 바로가기

코딩/파이썬 opencv

opencv-python 005. 카메라, 비디오 영상을 화면에 출력

Computer Vision - OpenCV - opencv-python

카메라 영상을 화면에 출력하기

<코드 1>

import cv2 as cv

cap = cv.VideoCapture(0)
print(type(cap))
print(cap.isOpened())

print(cap.get(cv.CAP_PROP_FRAME_WIDTH))
print(cap.get(cv.CAP_PROP_FRAME_HEIGHT))
# cap.set(cv.CAP_PROP_FRAME_WIDTH, 640)
# cap.set(cv.CAP_PROP_FRAME_HEIGHT, 480)

while True:
    ret, frame = cap.read()
    if not ret:
        break

    # frame = cv.flip(frame, 0)  # -1, 0, 1
    # frame = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
    cv.imshow('Camera', frame)

    if cv.waitKey(33) == 27:
        break

cap.release()
cv.destroyAllWindows()

 

1) 카메라 영상을 화면에 출력하기 위해 VideoCapture 객체를 생성한다. 첫번째 카메라에 대한 장치 번호는 0이다.

2) VideoCapture 객체의 read() 메서드를 이용해 하나의 영상 이미지를 가져온다.

3) flip()은 영상을 가로 또는 세로로 전환하는 기능을 제공한다.

비디오 영상을 화면에 출력하기

<코드 2>

import cv2 as cv

cap = cv.VideoCapture('video/sea.mov')
print(type(cap))
print(cap.isOpened())

print(cap.get(cv.CAP_PROP_FPS))
print(cap.get(cv.CAP_PROP_FRAME_WIDTH))
print(cap.get(cv.CAP_PROP_FRAME_HEIGHT))

while True:
    ret, frame = cap.read()
    if not ret:
        break

    cv.imshow('Video', frame)

    if cv.waitKey(33) == 27:
        break

cap.release()
cv.destroyAllWindows()

 

1) VideoCapture 객체를 생성할 때 재생할 비디오 파일 경로 및 이름을 전달인자로 사용한다.

2) VideoCapture 객체 cap의 get() 메서드로 프라퍼티 CAP_PROP_FPS의 값을 확인할 수 있다.

3) waitKey() 함수로 비디오 영상이 화면에 출력되는 간격을 설정해 본다. 30 FPS (frame per second).

카메라 영상을 avi 파일로 저장하기

<코드 3>

import cv2 as cv

cap = cv.VideoCapture(0)
fourcc = cv.VideoWriter_fourcc(*'DIVX')
wrt = cv.VideoWriter('video/test.avi', fourcc, 20., (640, 480))

while True:
    ret, frame = cap.read()
    if not ret:
        break

    frame = cv.flip(frame, 1)
    cv.imshow('VidoeWriter', frame)
    wrt.write(frame)

    if cv.waitKey(33) == 27:
        break

wrt.release()
cap.release()
cv.destroyAllWindows()

 

1) VideoWriter_fourcc() 함수의 전달인자는 c1, c2, c3, c4로 avi 파일 포맷에 대하여 'D', 'I', 'V', 'X'를 전달한다.