Skip to content

CvCapture

OpenCV의 CvCapture 객체에 대한 내용을 정리한다.

Attributes

속성

의미

비고

cv2.CAP_PROP_FRAME_WIDTH

프레임의 너비

-

cv2.CAP_PROP_FRAME_HEIGHT

프레임의 높이

-

cv2.CAP_PROP_FRAME_COUNT

프레임의 총 개수

-

cv2.CAP_PROP_FPS

프레임 속도

-

cv2.CAP_PROP_FOURCC

코덱 코드

-

cv2.CAP_PROP_BRIGHTNESS

이미지 밝기

카메라만 해당

cv2.CAP_PROP_CONTRAST

이미지 대비

카메라만 해당

cv2.CAP_PROP_SATURATION

이미지 채도

카메라만 해당

cv2.CAP_PROP_HUE

이미지 색상

카메라만 해당

cv2.CAP_PROP_GAIN

이미지 게인

카메라만 해당

cv2.CAP_PROP_EXPOSURE

이미지 노출

카메라만 해당

cv2.CAP_PROP_POS_MSEC

프레임 재생 시간

ms 반환

cv2.CAP_PROP_POS_FRAMES

현재 프레임

프레임의 총 개수 미만

cv2.CAP_PROP_POS_AVI_RATIO

비디오 파일 상대 위치

0 = 시작, 1 = 끝

Camera example

#include <opencv/highgui.h>

int main()
{
    char const * TITLE = "CAMERA";

    cvNamedWindow(TITLE, 0);
    cvResizeWindow(TITLE, 320, 240);

    CvCapture * capture = cvCreateCameraCapture(0);

    IplImage * frame = nullptr;
    char keycode = 0;

    while (true) {
        // Get the camera frame.
        frame = cvQueryFrame(capture);

        if (!frame) {
            break;
        }

        cvShowImage(TITLE, frame);

        keycode = cvWaitKey(33);

        // Check the ESC keycode.
        if (keycode == 27) {
            break;
        }
    }

    cvReleaseCapture(&capture);
    cvReleaseImage(&frame);

    cvDestroyWindow(TITLE);

    return 0;
}

주의사항!

위에서 cvQueryFrame함수가 반환하는 IplImage는 절대로 Release해선 안된다. 해당 소스코드 코맨트는 아래와 같다.

/* Just a combination of cvGrabFrame and cvRetrieveFrame
   !!!DO NOT RELEASE or MODIFY the retrieved frame!!!      */
CVAPI(IplImage*) cvQueryFrame( CvCapture* capture );

또한 cvShowImage이후 cvWaitKey();를 사용하여 반드시 WAIT해야 화면이 출력된다.

End of file

capVideo.open("CarsDrivingUnderBridge.mp4");

if (!capVideo.isOpened()) {
    std::cout << "error reading video file\n";
    return 0;
}
if (capVideo.get(CV_CAP_PROP_FRAME_COUNT) < 2) {
    std::cout << "error: video file must have at least two frames\n";
    return 0;
}

if ((capVideo.get(CV_CAP_PROP_POS_FRAMES) + 1) < capVideo.get(CV_CAP_PROP_FRAME_COUNT)) {
    capVideo.read(imgFrame2);
} else {
    std::cout << "end of video\n";
}

See also

Favorite site

IP CAMERA