C++ OpenCv c++;;如何将视频分割成大小为N的片段

C++ OpenCv c++;;如何将视频分割成大小为N的片段,c++,opencv,video,C++,Opencv,Video,我有一个视频,我需要分割成大小为N的小片段,N在3到10帧之间。是否有一种函数或方法可以捕获接下来的N帧并以向量/数组的形式返回它们?您可以使用以下代码将视频分割成小片段: vector<vector<Mat>> frames; // result store here, each one is a clip // (each contains num_frame_in_a_slice frames) int nu

我有一个视频,我需要分割成大小为N的小片段,N在3到10帧之间。是否有一种函数或方法可以捕获接下来的N帧并以向量/数组的形式返回它们?

您可以使用以下代码将视频分割成小片段:

vector<vector<Mat>> frames; // result store here, each one is a clip 
                            // (each contains num_frame_in_a_slice frames)
int num_frame_in_a_slice = 5; // set the number you want here

VideoCapture capture;
capture.open("your-video-path");

int track = 0;
vector<Mat> temp;
while(1)
{
    Mat frame;
    capture >> frame;

    if (!frame.empty())
    {
        if (track < num_frame_in_a_slice)
        {
            temp.push_back(frame);
            track++;
        }
        else
        {
            frames.push_back(temp);
            temp.clear();
            track = 0; // reset
        }
    }
}
矢量帧;//结果存储在这里,每一个都是一个剪辑
//(每个包含num_frame_in_a_slice frames)
int num\u frame\u in\u a\u slice=5;//在这里设置您想要的号码
视频捕获;
捕获。打开(“您的视频路径”);
int轨道=0;
向量温度;
而(1)
{
垫架;
捕获>>帧;
如果(!frame.empty())
{
如果(轨迹
查看答案可能会有所帮助