优化图像采集opencv

时间:2018-02-21 23:40:16

标签: c++ visual-studio-2017 opencv3.3

我目前正在做一个软件,需要在施加热量时拍摄流体变化的照片。我必须每100毫秒拍摄一次照片。我做了一个“hello world”代码来检查它是否可以在没有同步的情况下拍摄照片

#include "stdafx.h"
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
#include<time.h>
#include <iostream>
#include <stdlib.h>

using namespace std;
using namespace cv;


//** @function main */
int main()
{
    //! [mat]
    int n=5;
    Mat * frame;
    frame = new Mat[n];
    //! [mat]
    //! [cap]
    VideoCapture cap(0);
    //! [cap]
    //! [window]
    time_t prev = clock();
    namedWindow("video capture", WINDOW_NORMAL);
    cap.set(CV_CAP_PROP_FRAME_HEIGHT, 4008);
    cap.set(CV_CAP_PROP_FRAME_WIDTH, 3700);
    cap.set(CV_CAP_PROP_EXPOSURE, -2.5);
    //! [window]
    //! [trackbar]

    //while ((char)waitKey(1) != 'q') {
    for (int i = 0; i<5; i++) {
        cout << clock()-prev<<endl;
        prev = clock();
        //! [while]
        cap >> frame[i];

        //! [show]
    }
    for (int i = 0; i < 5; i++) 
        imwrite("test" + std::to_string(i) + ".jpg", frame[i]);
    while ((char)waitKey(1) != 'q') {}
    return 0;
}

我一拿到它就开始保存图像,大约有600毫秒的经过时间。因此我将它们存储在动态数组中。这减少了一半,但仍然不是我需要的。我正在使用visual studio 2017社区这是使用opencv 3.3.1的发布代码,相机是lumenera,拍摄的图像是4008x3700像素。评论的代码用于在1080p显示器中可视化图像,但我禁用了它,因为我不需要在这个阶段看到每一帧

0 个答案:

没有答案