1--打开摄像头
关键代码语句:
① VideoCapture cam(0);
② cam.read(img);
③ imshow("cam", img);
# include<opencv2/opencv.hpp>
# include<cstdio>
using namespace cv;
using namespace std;
int main(int argc, char *argv[]){
// 打开摄像头
VideoCapture cam(0);
if (!cam.isOpened()){
cout << "cam open failed!" << endl;
getchar();
return -1;
}
cout << "cam open success!" << endl;
namedWindow("cam");
Mat img;
for(;;){
cam.read(img); // 读帧
if (img.empty()) break;
imshow("cam", img); // 显示每一帧
if (waitKey(5) == 'q') break; // 键入q停止
}
return 0;
}
2--保存摄像头视频
关键代码:
①VideoWriter vw
②vw.open():fourcc指定编码格式(常见编码方式)、fps指定帧率、Size指定大小
③vw.write()
# include<opencv2/opencv.hpp>
# include<cstdio>
using namespace cv;
using namespace std;
int main(int argc, char *argv[]){
// 打开摄像头
VideoCapture cam(0);
if (!cam.isOpened()){
cout << "cam open failed!" << endl;
getchar();
return -1;
}
cout << "cam open success!" << endl;
namedWindow("cam");
Mat img;
VideoWriter vw;
int fps = cam.get(CAP_PROP_FPS); // 获取原视频的帧率
if (fps <= 0) fps = 25;
vw.open("./out1120.avi",
VideoWriter::fourcc('X', '2', '6', '4'),
fps,
Size(cam.get(CAP_PROP_FRAME_WIDTH),
cam.get(CAP_PROP_FRAME_HEIGHT))
);
if (!vw.isOpened()){ // 判断VideoWriter是否正常打开
cout << "videoWriter open failed!" << endl;
getchar();
return -1;
}
cout << "videoWriter open sucess!" << endl;
for(;;){
cam.read(img); // 读帧
if (img.empty()) break;
imshow("cam", img); // 展示当前帧
/*
这里可以添加对当前帧的处理操作
*/
vw.write(img); // 保存当前帧
if (waitKey(5) == 'q') break; // 键入q停止
}
return 0;
}
注:在Windows上执行上述代码可能会报以下错误:
解决方法:在输出的网址下载对应版本的库文件,放在执行文件.exe的同级目录即可,或者将该dll文件的路径添加到系统变量path中。
文章来源:https://www.toymoban.com/news/detail-505004.html
结果:生成的out1120.avi可以正常播放;文章来源地址https://www.toymoban.com/news/detail-505004.html
到了这里,关于Opencv(C++)笔记--打开摄像头、保存摄像头视频的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!