《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才能完成视频录制
上一篇: 重装系统后加载mysql服务
下一篇: oracle服务