Picam отстает на 5 кадров, используя OpenCV (C ++) - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь сделать 3 снимка, разделенных задержкой в ​​1 с.При съемке запущенного секундомера это показывает, что эти изображения находятся на расстоянии ~ 30 мс друг от друга.Приложение работает на Raspberry Pi 3 B + с Picam v2.1 (установлен на 30 FPS, и в противном случае настройки по умолчанию).Мой код выглядит следующим образом:

#include <iostream>
#include <opencv2/core/core.hpp>
#include "opencv2/imgcodecs.hpp"
#include "opencv2/imgproc.hpp"
#include <opencv2/opencv.hpp>
#include <unistd.h>

using namespace std;
using namespace cv;

int main()
{
    Mat img;
    VideoCapture vcap;

    cout << "Opening camera..." << endl;
    vcap.open(0);
    vcap.set(CV_CAP_PROP_POS_FRAMES, 0);

    usleep(1000*2000);

    if(vcap.isOpened())
    {
        vcap.set(CV_CAP_PROP_FRAME_WIDTH, 1920);
        vcap.set(CV_CAP_PROP_FRAME_HEIGHT, 1080);

        cout << "Taking image...(1)" << endl;
        vcap >> img;
        imwrite("img1.jpg", img);

        usleep(1000*1000);

        cout << "Taking image...(2)" << endl;
        vcap >> img;
        imwrite("img2.jpg", img);

        usleep(1000*1000);

        cout << "Taking image...(3)" << endl;
        vcap >> img;
        imwrite("img3.jpg", img);
    }
    else
    {
        cout << "Could not open camera!" << endl;
    }

    vcap.release();

    return 0;
}

Я также пробовал бесконечный цикл, где я беру изображение и отображаю его.Это показывает, что для того, чтобы камера соответствовала действительности, требуется 5 кадров (например, если я беру изображение моей руки, а затем убираю руку, требуется 5 изображений, прежде чем я вижу, что моя рука удалена).

У меня есть поиск по всему, но я не могу найти других с такой же проблемой.

Пожалуйста, дайте мне знать, если мне нужно добавить дополнительную информацию.

...