OpenCV学习笔记----保存视频文件.avi
第八个程序:写入视频文件avi
在许多应用中,通常需要实现录像功能,我们希望将摄像头捕捉到的数据流或者图像文件拼接成的输入流存放到视频流中,便于日后查看
OpenCV提供了VideoWrite对象用于完成以上工作,一旦将其实例化,我们就可以将图像数据写入到VideoWrite对象中,完成写入之后调用VideoWrite的release()方法将对象释放
OpenCV写入文件的格式必须是.avi,否则将无法写入信息
ViedoWrite类的open函数解析:
open(const char* filename, int fourcc, double fps, CvSize frame_size, int is_color=1);
- filename:保存文件名
- fourcc:压缩帧的类型(详细类型请自行搜索)
- fps:帧率
- size:视频分辨率
- is_color:0输出灰度图,非0输出彩色图
#include
#include using namespace std;
using namespace cv;
int main()
{
VideoCapture cap;
cap.open(0);
if(!cap.isOpened())
{
cout << "The camera open failed!" << endl;
}Mat frame;
int fps = 60;
Size size((int)cap.get(CAP_PROP_FRAME_WIDTH),(int)cap.get(CAP_PROP_FRAME_HEIGHT));
VideoWriter writer;
writer.open("Camera.avi",CV_FOURCC('M','J','P','G'),fps,size);
while(1)
{
cap >> frame;
if(frame.empty())
break;
imshow("Camera",frame);
writer << frame;
if(waitKey(10) == 'c') //按下c键,程序退出
break;
}cap.release();
}
编写程序过程中遇到的问题:
- fps不能设置为cap.get()获取到的帧率,如果是文件的话,应当如此,但是摄像头读取的信息如果设置为该值会导致fps的值为-1,造成录制的文件中没有数据的问题
文章图片
推荐阅读
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- 由浅入深理解AOP
- 继续努力,自主学习家庭Day135(20181015)
- python学习之|python学习之 实现QQ自动发送消息
- Android中的AES加密-下
- 一起来学习C语言的字符串转换函数
- opencv|opencv C++模板匹配的简单实现
- Java|Java OpenCV图像处理之SIFT角点检测详解
- 定制一套英文学习方案
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)