Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++와 OpenCV로 동영상의 총 프레임 수 구하는 방법

이번 글에서는 OpenCV를 사용하여 동영상의 총 프레임 수를 계산하는 방법을 알아보겠습니다. OpenCV를 활용하면 동영상의 전체 프레임 수를 손쉽게 세고 화면에 표시할 수 있습니다.

다만 한 가지 주의해야 할 점이 있습니다. 실시간 영상(카메라 스트리밍)의 프레임 수는 계산할 수 없다는 것입니다. 실시간 영상은 종료 시점이 정해져 있지 않아 특정한 프레임 개수가 존재하지 않기 때문입니다. 따라서 이 방법은 MP4처럼 이미 저장된 동영상 파일에만 적용할 수 있습니다.

아래 예제 코드는 동영상 파일의 총 프레임 수를 계산하여 콘솔 창에 출력하는 프로그램입니다.

예제 코드

#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main() {
    int frame_Number;//총 프레임 수를 저장할 정수형 변수 선언//
    VideoCapture cap("video.mp4");//동영상 파일에서 프레임 스트림을 읽어오는 객체 생성//
    frame_Number = cap.get(CAP_PROP_FRAME_COUNT);//총 프레임 수 가져오기//
    cout << "Total Number of frames are:" << frame_Number << endl;//콘솔 창에 결과 출력//
    system("pause");//시스템 일시 정지로 결과 확인//
    cap.release();//버퍼 메모리 해제//
    return 0;
}

코드 설명

코드의 핵심은 cap.get(CAP_PROP_FRAME_COUNT) 부분입니다. VideoCapture 객체의 get() 함수에 CAP_PROP_FRAME_COUNT 속성을 인자로 전달하면, 해당 동영상 파일이 가진 전체 프레임의 개수를 반환합니다.

동작 순서를 간단히 정리하면 다음과 같습니다.

1. VideoCapture 객체 생성 – "video.mp4" 파일을 열어 프레임 스트림을 준비합니다.
2. 프레임 수 조회get(CAP_PROP_FRAME_COUNT)로 총 프레임 수를 정수 값으로 얻습니다.
3. 결과 출력cout으로 콘솔 창에 프레임 수를 표시합니다.
4. 자원 해제cap.release()로 버퍼 메모리를 반환합니다.

실행 결과

프로그램을 실행하면 아래 그림과 같이 콘솔 창에 정수 형태의 총 프레임 수가 출력됩니다.

Output

C++와 OpenCV로 동영상의 총 프레임 수 구하는 방법

이처럼 OpenCV의 CAP_PROP_FRAME_COUNT 속성을 활용하면 단 몇 줄의 코드로 동영상 파일의 총 프레임 수를 간편하게 확인할 수 있습니다. 참고로 같은 방식으로 CAP_PROP_FPS(초당 프레임 수)나 CAP_PROP_FRAME_WIDTH, CAP_PROP_FRAME_HEIGHT 등의 속성도 조회할 수 있으니, 동영상 메타 정보를 다룰 때 유용하게 활용해 보시기 바랍니다.