利用opencv类库在MFC显示摄像头视频并且保存摄像头视频

来源:互联网 发布:网络刷客 编辑:程序博客网 时间:2024/05/20 18:03

关于摄像头的控制操作,无非就是获取摄像头图像并且保存摄像头视频等常用的操作。

 

关于在MFC项目中利用opencv捕获摄像头信息,在下面这篇文章中写的很详细:

http://blog.csdn.net/weixingstudio/article/details/7360941

 

如果在这个项目的基础上添加保存摄像头信息,就可以简单的实现了,在原来项目的基础上调用cvCreateVideoWriter()函数创建一个写视频文件的指针,然后把每一帧的视频文件用cvWriteFrame(writer,m_Frame);这个函数实现就可以了。

 

writer=cvCreateVideoWriter("MyVideo.avi",CV_FOURCC('x','v','I','D'),25,cvSize(640,480));

上面函数中的参数大概就是创建视频文件的名字,视频压缩的格式,每秒钟的视频帧数,视频的大小。具体的参数设置请参考opencv开发文档。

 

关于opencv项目的配置,请参考opencv社区教程。本项目的所有配置,可以参考链接:http://blog.csdn.net/weixingstudio/article/details/7360941

两个主要的函数:

CvCapture* capture;CRect rect;CDC *pDC;HDC hDC;CWnd *pwnd;


 

void CVideoMFCDlg::OnBnClickedButton1(){// TODO: Add your control notification handler code here//AfxMessageBox("OK");if(!capture){capture = cvCaptureFromCAM(0);//AfxMessageBox("OK");}if (!capture){AfxMessageBox("无法打开摄像头");return;}writer=cvCreateVideoWriter("MyVideo.avi",CV_FOURCC('x','v','I','D'),25,cvSize(640,480));// 测试IplImage* m_Frame;m_Frame=cvQueryFrame(capture);CvvImage m_CvvImage;m_CvvImage.CopyOf(m_Frame,1);if (true){m_CvvImage.DrawToHDC(hDC, &rect);//cvWaitKey(10);}// 设置计时器,每10ms触发一次事件SetTimer(1,10,NULL);}


 

void CVideoMFCDlg::OnTimer(UINT_PTR nIDEvent){// TODO: Add your message handler code here and/or call default/************************************************************************//* 显示摄像头                                                           *//************************************************************************/IplImage* m_Frame;m_Frame=cvQueryFrame(capture);CvvImage m_CvvImage;m_CvvImage.CopyOf(m_Frame,1);if (true){m_CvvImage.DrawToHDC(hDC, &rect);cvWriteFrame(writer,m_Frame);//cvWaitKey(10);}CDialogEx::OnTimer(nIDEvent);}


关于整个显示摄像头并且保存摄像头信息的工程源码,可以从下面链接下载:

http://download.csdn.net/detail/weixingstudio/4284066

 

原创粉丝点击