每隔一秒捕捉一张图像
Capturing an image every determined seconds
我想创建一个程序,每五秒钟捕获一个图像。这是我的源代码:
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Mat frame;
VideoCapture cap;
cap.open(0);
while(1)
{
cap>>frame;
imshow("frame",frame);
if(waitKey(10)=='c')
{
QString nama = QString("webcam_capture_%1.jpg") .arg(QString::number(x));
imwrite(nama.toStdString(),frame);
x++;
sleep(5);
nama = QString("webcam_capture_%1.jpg") .arg(QString::number(x));
imwrite(nama.toStdString(),frame);
x++;
}
else if(waitKey(10)=='x')
break;
}
cap.release();
return a.exec();
}
当我按下'c'时,程序应该捕获两张图像,当休眠执行时,程序冻结五秒钟,然后继续。但是第一次捕获和第二次捕获的图像结果是相同的。
延迟程序的正确功能是什么?为什么两张照片的图像捕获结果是一样的?
我使用Windows 7, Qtcreator 2.7.2 Qt5, openCV 2.4.6。我也打算在Linux上运行这个程序。
编辑:解决!在按Ove的说法添加了第一个cap>>frame
之后,我又添加了一个cap>>frame
,下一个图像捕获是5秒后的真正图像。所需cap>>frame
的数量取决于您的cpu速度。我在迷你PC上尝试了一下,我需要五个cap>>frame
在循环开始时读取帧一次,然后将相同的图像写入两个不同的文件。这就是为什么你得到相同的图像。
在调用sleep(5)
之后,您应该添加这一行:
cap>>frame;
,以便捕获新图像并将第二个图像写入第二个文件。
相关文章:
- 如何从另一张地图构造一张地图
- 如何在视频序列中识别一次图像?
- 从 3 个视点在 3 张图像上有 3 个点如何在 3D 空间中获取其坐标?
- 使用 QTimer 对包含 5 张图像的幻灯片进行计时
- C++显示图像并将其保持到下一张图像的最佳方法
- OpenGL Ping Pong可与一张通行证一起工作,而不是两个通行证
- 使用缝合一组图像的相机参数使用针迹不同的图像集
- 画一张卡,并打电话给它
- 洗牌一张牌
- 检查一张图片是否与另一张图片偏移
- 视觉C++库,用于在不使用Opencv的情况下将一组图像转换为视频
- 如何在两张图像中找到对应的点
- 在 Windows 中自动将 xlsx 文件转换为多个 (MS-DOS) CSV 文件(每张一张一个)
- 把一个价格(例如89.95美元)读成一张双人床
- GDI+在循环中只保存一次图像
- 如何将地图的反面复制到另一张地图上
- 用简单的opengl图像库(SOIL)加载一张图像(颜色空间:GRAY)
- 每隔一秒捕捉一张图像
- 有没有一种方法可以在同一张图像上同时拥有灰度和rgb像素opencv C++
- 在OpenCV中将两张撕破的纸合并成一张图像