Picam使用OpenCV(C ++)落后5帧

时间:2018-10-03 09:46:39

标签: c++ opencv camera raspberry-pi3

我正在尝试拍摄3张图像,但间隔为1秒。拍摄正在运行的秒表图像时,表明图像之间的间隔仅为30ms。该应用程序在具有picam v2.1(设置为30 FPS,否则为默认设置)的Raspberry Pi 3 B +上运行。我的代码如下:

#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张图像才能看到我的手被移开)。

我搜索的范围很广,但似乎找不到其他遇到相同问题的人。

如果需要添加更多详细信息,请告诉我。

0 个答案:

没有答案