我目前正在做一个软件,需要在施加热量时拍摄流体变化的照片。我必须每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显示器中可视化图像,但我禁用了它,因为我不需要在这个阶段看到每一帧