OpenCV学习笔记(02) :OpenCV拍摄视频并保存

1. 前言

  本程序基于Visual Studio2013+Windows 7x64 +OpenCV3.1的环境,实现调用电脑USB摄像头,并保存视频文件到本地的功能。

程序实现

//VideoCapture.cpp
#include
using namespace cv;
int main(){
	VideoCapture capture(0);
	// 设置摄像头的拍摄属性为 分辨率640x480,帧率30fps
	capture.set(CAP_PROP_FRAME_HEIGHT, 480);
	capture.set(CAP_PROP_FRAME_WIDTH, 640);
	capture.set(CAP_PROP_FPS, 30.0);
	// 设置保存视频的格式为AVI,编码为MJPG
	VideoWriter writer("test.avi", VideoWriter::fourcc('M', 'J', 'P', 'G'), 30.0, Size(640, 480), true);
	Mat videoPlay;
	// 通过总帧数来控制拍摄时间,如果是10s的段视频的话,循环300次
	int count(300);
	namedWindow("VideoPlay", WINDOW_NORMAL);
	while (count--){
		capture >> videoPlay;
		writer << videoPlay;
		imshow("VideoPlay", videoPlay);
		waitKey(1000 / 30);
	}
	// 释放相关对象
	writer.release();
	capture.release();
	destroyWindow("VideoPlay");
	return 0;
}

2. 运行结果

OpenCV学习笔记(02) :OpenCV拍摄视频并保存_第1张图片

3. 几种可能会影响拍摄的情况

  • 尽管程序中设定了拍摄的帧率为30fps,但是摄像头的帧率很大程度上受硬件状况和实时环境的限制。比如电压,插电源的笔记本比用电池的笔记本帧率更高更稳定;再比如光照,太暗的环境往往也达不到30fps;
  • debug模式下,由于VS要加入很多调试信息,因此摄像头的帧率可能会有所下降。 waitKey的等待时间可以适当降低,略低于1000/30 ms的间隔最好,太高也会影响视频帧率。

你可能感兴趣的:(OpenCV)