欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

《OpenCV录像功能》

程序员文章站 2022-05-16 15:50:08
...

 示例代码

#include "opencv2/opencv.hpp"

using namespace cv;

int main()
{
	VideoCapture m_Capture;	//<VideoCapture类对象,用于打开视频和摄像头
	VideoWriter m_SkyWrite;	//<VideoWriter类对象,用于录像
	m_Capture.open(0);
	m_SkyWrite.open("F:\\磊神视频\\2boy.avi", CV_FOURCC('M','J','P','G'),25.0,Size(640,480),true); 
	Mat frame;
	
	while (m_Capture.isOpened())
	{
		m_Capture>>frame;
		m_SkyWrite<<frame;
		imshow("<xiaolei>",frame);
		//ESC退出
		if (cvWaitKey(25) == 27)  
		{  
			break;  
		} 
	}
	m_Capture.release();
	m_SkyWrite.release();
	return 0;
}

代码解析

00 VideoWriter类(用于录制视频的类和VideoCapture类一样)

class CV_EXPORTS_W VideoWriter
{
public:
    CV_WRAP VideoWriter();
    CV_WRAP VideoWriter(const string& filename, int fourcc, double fps,
                Size frameSize, bool isColor=true);

    virtual ~VideoWriter();
    CV_WRAP virtual bool open(const string& filename, int fourcc, double fps,
                      Size frameSize, bool isColor=true);
    CV_WRAP virtual bool isOpened() const;
    CV_WRAP virtual void release();
    virtual VideoWriter& operator << (const Mat& image);
    CV_WRAP virtual void write(const Mat& image);

protected:
    Ptr<CvVideoWriter> writer;
};

VideoWriter类在OpenCV的highgui.hpp里面,像上面看到的一样包含了:open()函数、isOpened()函数、release()函数、write()函数,还有一个VideoWriter& operator << (const Mat& image);

01 创建VideoWriter类对象

VideoWriter m_SkyWrite;    //<VideoWriter类对象,用于录像

02 初始化录像

bool open(const string& filename, int fourcc, double fps,
                      Size frameSize, bool isColor=true);

参数:

filename:保存视频的路径名

fourcc:录制视频的格式

fps:录制视频的帧率(1秒多少帧)

frameSize:录制视频图片的尺寸大小(需要跟原图像保持一致)

isColor:bool类型的,一般默认为true,彩色

03 录制视频(逐帧写入)

m_SkyWrite<<frame;

或者

m_SkyWrite.write(frame);

04 释放对象(最好要释放对象,不然可能录制的视频是没有时间的)

m_SkyWrite.release();

05 操作

用上面这段代码,由于加了个按键控制视频录制,所以需要按下ESC才能完成视频录制

《OpenCV录像功能》