OpenCV 调用摄像头录制指定分辨率视频----(解决保存的视频仅有6Kb的问题)
2018-01-10 15:58
651 查看
1.环境信息
win10 系统,VS2012,openCV 2.4.9,支持UVC协议的免驱动720p摄像头2.问题描述
摄像头最大支持1280x960分辨率,但OpenCV调用的时候默认的分辨率是640x480。需要调用摄像头录制1280x720的视频。没有报错信息,却发现生成的视频始终只有6Kb,无法播放。
程序如下
#include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> #include <iostream> using namespace std; using namespace cv; void main() { VideoCapture capture(0); int framecount=0; int dWidth=1280; int dHeight=720; Size frameSize(static_cast<int>(dWidth),static_cast<int>(dHeight)); VideoWriter writer("VideoTest.avi",CV_FOURCC('P','I','M','1'),20,frameSize,true); //CV_FOURCC('I','Y','U','V') if (!capture.isOpened()) std::cout<< "Video open failed" << endl; Mat frame; while(framecount<=50) { capture.read(frame); writer << frame; waitKey(30); framecount=framecount+1; cout<<"成功写入视频中,当前已写入帧数为: "<<framecount<<endl; } capture.release(); writer.release(); return ; }
3.问题分析
视频只有6KB,是因为只生成了avi文件的头文件,没有真正地写入图像信息。自然的怀疑是Videowriter()中设置的编码FOURCC的问题
修改不同的编码格式,始终只有6KB。
经过仔细分析,发现问题在于视频尺寸上。
Videowriter的尺寸设置为了1280*720,而capture读取的图像尺寸仍然是默认尺寸,没有修改,所以视频不能正常保存
添加两句修改capture尺寸的即可。
capture.set(CV_CAP_PROP_FRAME_WIDTH,1280); capture.set(CV_CAP_PROP_FRAME_HEIGHT,720);
修改后部分如下
Mat frame;
capture.set(CV_CAP_PROP_FRAME_WIDTH,1280); capture.set(CV_CAP_PROP_FRAME_HEIGHT,720);
while(framecount<=50)
{
capture.read(frame);
writer << frame;
waitKey(30);
framecount=framecount+1;
cout<<"成功写入视频中,当前已写入帧数为: "<<framecount<<endl;
}
capture.release();
writer.release();
cvDestroyAllWindows();
return ;
}
4.问题总结
openCV 调用摄像头录制视频很简单,但是生成视频只有6Kb这种失误情况,网上讲的不是很多。所以刚开始以为问题出在视频解码上,花了一些无用功。
虽然是小问题,但记录一下,希望遇到同样情况的朋友可以参考一下,少花些功夫。
相关文章推荐
- Qt使用opencv调用摄像头录制视频并保存文件
- 调用系统UIImagePickerController录像并保存到指定的文件夹,解决保存后播放视频角度偏移90度问题
- 【图像识别】 Python+Opencv调用摄像头实现人脸识别并保存视频
- 解决 opencv 保存视频为 0 KB 的问题, 部分适用
- Swift - 视频录制教程1(调用摄像头录像,并保存到系统相册)
- opencv调用摄像头录制视频
- opencv调用摄像头录制视频
- opencv使用笔记本摄像头获取视频问题解决
- python 使用OpenCV保存视频失败的解决方案及摄像头显示灰色的解决办法
- OpenCV学习笔记_调用摄像头录制视频(无声音)
- 基于OpenCV的小程序:从摄像头录制视频并保存
- android调用系统相机进行视频录制并保存到指定目录
- OpenCV011:调用本地左右摄像头拍照并保存到指定路径
- win8 metro 调用摄像头录制视频并将视频保存在相应的位置
- 解决OpenCV在使用摄像头捕捉视频流时出现的一个奇怪问题
- OpenCV 2.2.0 摄像头捕获视频问题的解决
- opencv调用摄像头在mfc控件中显示黑屏问题的解决
- OpenCV 2.2.0 摄像头捕获视频问题的解决
- 安卓视频录制、调用系统音乐、视频播放器所遇问题及解决(包含7.0兼容问题)
- Qt调用OpenCV实现录制视频文件中的几个问题