비디오 코덱

일반 동영상 불러오기 : VideoCapture()

케케_ 2024. 11. 27. 17:04

이번 내용은 이전 글과 비슷하다.

달랐던 점은 실시간이 아닌 녹화 영상이기 때문에, 끝이 존재한다는 점이다.

따라서 저번 예제 코드에서 끝처리를 위한 코드만 추가해줬다.

 


일반 녹화 비디오를 불러오기 때문에

VideoCapture 변수에 동영상의 경로를 넣어줌

    cv::VideoCapture cap("../test.MOV");
  • MOV 영상도 지원함!

 

 

- 동영상을 여러개 불러오고 싶은 경우

 ==> 변수를 여러게 선언하면 된다고 함! (대신 느려짐)

 

 

영상의 끝 처리 

if(frame.empty()) {
    std::cout<< "empty frame"<<std::endl ;
    return 0;
}
  • 불러온 프레임이 존재하는지 확인 후 처리

 

waitKey 함수

if (cv::waitKey(30) == 27)   break;

 

  • 녹화된 일반 비디오이므로 재생 속도 조절 값 넣음

 

예제 코드

#include <opencv2/opencv.hpp>
#include <iostream>

int main() {
    cv::VideoCapture cap("../test.MOV");

    if(!cap.isOpened()) {
        std::cerr << "Error: Cannot open video file!" << std::endl;
        return -1;
    }

    cv::Mat frame;

    while (1)
    {
        cap >> frame; //프레임 읽기

        if(frame.empty()) {
            std::cout<< "empty frame"<<std::endl ;
            return 0;
        }

        cv::imshow("camera img" , frame);

        if (cv::waitKey(30) == 27)   break;
    }

    return 0;
}

 

 

코드 결과