OpenCV - Как вернуть sh мат в очередь? - PullRequest
2 голосов
/ 10 марта 2020

Я пытаюсь поместить кадры видео в деку. Этот код не работает. Поскольку задняя и передняя часть очереди совпадают с текущим кадром.

deque<Mat> frameSeq;
int main() {
    Mat frame;
    VideoCapture video("path to video");
    int key = 0;
    while (key != 'q') {
        video >> frame;

        frameSeq.push_back(frame);

        imshow("front", frameSeq.front());
        imshow("back", frameSeq.back());

        key = cvWaitKey(1);
    }
    return 0;
}

Но когда я изменяю размер кадра:

deque<Mat> frameSeq;
int main() {
    Mat frame;
    VideoCapture video("path to video");
    int key = 0;
    while (key != 'q') {
        video >> frame;

        cv::resize(frame, frame, cv::Size(), 1.0 / 2, 1.0 / 2);
        frameSeq.push_back(frame);

        imshow("front", frameSeq.front());
        imshow("back", frameSeq.back());

        key = cvWaitKey(1);
    }
    return 0;
}

Это работает хорошо. Теперь frameSeq.back() - текущий кадр, а frameSeq.front() - начальный кадр.

Как заставить очередь работать без изменения размера кадра?

...