OpenCV Mat矢量数组

时间:2017-08-27 14:01:02

标签: c++ opencv

我创建了矢量矢量来存储cv :: Mat(framecollection)。我的计划是将视频的每一帧分割成N * N块并存储。但是在我运行代码时,它只存储了framecollection的每个位置的最后一帧。我不知道代码有什么问题。

int nframes=(int)capture.get(CV_CAP_PROP_FRAME_COUNT);
int frame_row=capture.get(CV_CAP_PROP_FRAME_HEIGHT);
int frame_cols=capture.get(CV_CAP_PROP_FRAME_WIDTH);
int X=ceil(frame_row/(double)N);//rows
int Y=ceil(frame_cols/(double)N);//cols 
std::vector<std::vector<Mat> > framecollection(nframes, std::vector<Mat> (X*Y));
//std::array< std::vector<Mat>, nframes > framecollection;
int f=0;
for( ; ; )
{
    capture >> frame;

    if(frame.empty())
        break;

    vector<Mat> blocks;
    for (int r = 0; r < frame_row; r += N)
    {
        for (int c = 0; c < frame_cols; c += N)
        {
            Mat tile = frame(Range(r, min(r + N, frame_row)),Range(c, min(c + N, frame_cols)));
            blocks.push_back(tile);
        }
    }
    framecollection[f]=blocks;
    f++;

}

// framecollection仅提供每个位置的最后一帧

0 个答案:

没有答案