代码如下
用我上一篇文章中按键退出循环操作;
保存视频的后缀,以及fourcc还有待深究;
摄像头为普通的usb摄像头
#include <opencv2/opencv.hpp>
#include <opencv2/core.hpp>
#include <iostream>
#include <conio.h>
using namespace cv;
using namespace std;
int main()
{
// 视频保存位置
string outputVideoPath = "./test.mp4";
// 打开摄像头
VideoCapture cap(1);
// 获取摄像机帧率,这一步有问题,打印出来是0,暂时不知道为什么,有知道的大佬可以在评论区告诉我,谢谢!
//暂时自取30,播放出来的视频才是正常速度,小了视频会变慢
//int fps = cap.get(CAP_PROP_FPS);
// 获取当前摄像头的视频信息
cv::Size S = cv::Size(cap.get(CAP_PROP_FRAME_WIDTH),
cap.get(CAP_PROP_FRAME_HEIGHT));
// 打开视频路径,设置基本信息 open函数中你参数跟上面给出的VideoWriter函数是一样的
VideoWriter wri("./wri.mp4", cap.get(CAP_PROP_FOURCC), 30, S, true);
cout << "here" << fps << endl;
// 图片帧
cv::Mat frameImage;
int count = 0;
char key = 'a';
while (true) {
// 读取当前帧
cap >> frameImage;
if (frameImage.empty()) break;
++count;
// 输出当前帧
cv::imshow("output", frameImage);
// 保存当前帧
wri << frameImage;
waitKey(1);
if (_kbhit()) {
key = _getch();
}
if (key == 27) //按下esc退出while循环
{
cout << "按下esc键" << endl;
key = 'a';
break;
}
}
return 0;
}