opencv 调用usb工业相机连续采集图片保存到指定路径 ,输出每一次采集用时 c++
时间: 2023-06-14 18:05:30 浏览: 117
C++基于OpenCV的USB双相机采集程序源码+使用文档+全部资料(优秀项目).zip
可以使用OpenCV中的VideoCapture类来实现对USB工业相机的连续采集,然后使用imwrite函数将每一帧图像保存到指定路径。代码如下:
```c++
#include <iostream>
#include <opencv2/opencv.hpp>
#include <chrono>
using namespace cv;
using namespace std::chrono;
int main()
{
// 打开相机
VideoCapture cap(0);
if (!cap.isOpened())
{
std::cout << "Failed to open camera." << std::endl;
return -1;
}
// 设置分辨率和帧率
cap.set(CAP_PROP_FRAME_WIDTH, 1280);
cap.set(CAP_PROP_FRAME_HEIGHT, 720);
cap.set(CAP_PROP_FPS, 30);
// 循环采集图像并保存
int count = 0;
while (true)
{
auto start_time = high_resolution_clock::now(); // 获取开始时间
Mat frame;
cap >> frame;
if (frame.empty())
{
std::cout << "Failed to capture frame." << std::endl;
break;
}
std::string filename = "image_" + std::to_string(count) + ".jpg";
imwrite(filename, frame);
auto end_time = high_resolution_clock::now(); // 获取结束时间
auto time_span = duration_cast<milliseconds>(end_time - start_time); // 计算时间差
std::cout << "Time used: " << time_span.count() << "ms" << std::endl;
count++;
if (count >= 100)
break;
}
cap.release(); // 释放相机
return 0;
}
```
在上面的代码中,我们使用了C++11中的std::chrono库来获取程序运行时间。每次采集完成后,我们输出运行时间并将计数器加一,当计数器达到100时,程序退出,并释放相机资源。
阅读全文