- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
保存摄像数据实践
一、创建一个保存摄像数据的MFC对话框程序SaveCamData:
二、应用程序界面
三、添加依赖项
将cxcore200.lib cv200.lib highgui200.lib添加到解决方案属性中的项目依赖项中
将头文件cv.h、highgui.h包含进头文件SaveCamData.h中
#include cv.h
#include highgui.h
四、为对话框类CSaveCamDataDlg添加三个变量:
// 摄像头变量
CvCapture* capture;
// 摄像帧图像变量
IplImage* frame;
// 视频写入器变量
CvVideoWriter* writer;
// 保存标志
bool saveflag;
在对话框类的构造函数中,默认将这三个变量初始化为NULL:
CSaveCamDataDlg::CSaveCamDataDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSaveCamDataDlg::IDD, pParent)
, capture(NULL)
, frame(NULL)
, writer(NULL)
, saveflag(false)
{
m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);
}
将NULL都修改为0
五、为按钮添加各个事件代码:
1、开启摄像头
void CSaveCamDataDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
capture = cvCaptureFromCAM( 0 );
}
2、保存摄像
void CSaveCamDataDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
saveflag=true;//保存的标志,为true,表示可以保存
int isColol=1;
int frameW=640;
int frameH=480;
int fps=125; //捕捉帧率
writer=cvCreateVideoWriter(out.avi,CV_FOURCC(P,I,M,1),fps,cvSize(frameW,frameH),isColol);
while(saveflag)
{
frame = cvQueryFrame( capture );
cvWriteFrame(writer,frame );
//char c = cvWaitKey(10);
//if( c == 27 ) break;
}
}
3、停止保存摄像
void CSaveCamDataDlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码
saveflag=false;//保存标志为false,停止保存
}
4、关闭视频
void CSaveCamDataDlg::OnBnClickedButton4()
{
// TODO: 在此添加控件通知处理程序代码
cvReleaseVideoWriter(writer);
cvReleaseImage(frame);
cvReleaseCapture( capture );
}
六、调试出现故障:
调试的时候,出现了问题,就是按下“保存摄像”按钮后,响应的事件就是开始保存摄像,但是窗口的焦点并没有释放,以至于窗体停滞不响应,“停止保存摄像”按钮无法按下,程序也无法关闭,只能强行中止调试。强行中止调试后,检测保存的摄像,发现视频文件可以播放,但是不能拖动,因为没有正常将writer销毁给视频一个有效的终结。
七、故障排检方案一:
在开始保存摄像按钮事件中代码改为:
void CSaveCamDataDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
saveflag=true;//保存的标志,为true,表示可以保存
int isColol=1;
int frameW=640;
int frameH=480;
int fps=125; //捕捉帧率
int moretime=0;
writer=cvCreateVideoWriter(out.avi,CV_FOURCC(P,I,M,1),fps,cvSize(frameW,frameH),isColol);
while(saveflag(moretime100))
{
frame = cvQueryFr
您可能关注的文档
最近下载
- SICK西克KTS Core色标传感器操作手册.pdf VIP
- GB50345-2012 屋面工程技术规范.docx VIP
- 船舶油漆使用基本基础知识.pdf VIP
- 四年级(上)语文课文同步仿写、续写1.pdf VIP
- 9 天上有颗“南仁东星”课件(共30张PPT)2025-2026学年统编版语文八年级上册.pptx VIP
- 高级保育员课件.pptx VIP
- 第十章生态系统.ppt VIP
- 《脑卒中运动障碍康复护理规范》.pdf VIP
- 2012年全国创新杯说课大赛作品汇总铰链四杆机构的类型及判定说课(新蓝).ppt VIP
- 年处理80吨茯苓提取车间提取工段工艺设计-毕业论文(设计).doc VIP
文档评论(0)