Opencv+VS+MFC 播放视频(cv 2.3+版本)
2016-03-30 18:24
337 查看
配置环境,可以参考:VS2013配置OpenCv3.0
建立MFC对话框,添加按钮(打开视频和关闭视频),添加picture控件(IDC_P)。
导入Cvvimage 的头文件和cpp文件。下载地址
添加全局变量。
在OnInitDialog()中添加
编辑按钮函数。
添加timer:项目->类向导
其中使用Mat格式,减少内存问题,经测试几乎没有内存问题,后续会把CvvImage中的Iplimage也换成Mat。
建立MFC对话框,添加按钮(打开视频和关闭视频),添加picture控件(IDC_P)。
导入Cvvimage 的头文件和cpp文件。下载地址
添加全局变量。
VideoCapture capture; CRect rect; CDC *pDC; HDC hDC; CWnd *pwnd;
在OnInitDialog()中添加
pDC = pwnd->GetDC(); hDC = pDC->GetSafeHdc(); pwnd->GetClientRect(&rect);
编辑按钮函数。
void CMFCApplication1Dlg::OnBnClickedOpenvideo() { // TODO: 在此添加控件通知处理程序代码 //VideoCapture if (!capture.isOpened()) { capture.open("D://1.avi"); } SetTimer(1, 25, NULL); //定时器,定时时间和帧率一致 //Mat image = imread("0308.jpg", 1); //显示图片 //DrawPicToHDC(cvCloneImage(&(IplImage)image), IDC_P); } void CMFCApplication1Dlg::OnBnClickedClosevideo() { // TODO: 在此添加控件通知处理程序代码 capture.release(); }
添加timer:项目->类向导
void CMFCApplication1Dlg::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值 if (1 == nIDEvent) { Mat img; capture.read(img); //从摄像头或者文件中抓取并返回一帧 CvvImage m_CvvImage; IplImage* img_temp = cvCloneImage(&(IplImage)img); m_CvvImage.CopyOf(img_temp, 1); //复制该帧图像 cvReleaseImage(&img_temp); m_CvvImage.DrawToHDC(hDC, &rect); //显示到设备的矩形框内 } CDialogEx::OnTimer(nIDEvent); }
其中使用Mat格式,减少内存问题,经测试几乎没有内存问题,后续会把CvvImage中的Iplimage也换成Mat。
相关文章推荐
- centos svn服务器搭建
- context和aop
- PopUpWindow显示在某个View之上,同时使用动画
- linux 实现输出重定向(printf 打印,输出到指定文件(不输出到终端))
- 使用CocoaPod出现-bash: pod: command not found 解决办法
- Windows下使用git bash 出现乱码解决办法
- linux下创建目录,清空目录文件
- linux命令笔记
- Linux与windows之间实现文件共享
- linux云服务器信息查看
- shell标记技巧 $变量使用
- LINUX - CUT
- 系统管理员需知:25个Linux服务器安全技巧(转)
- linux正则表达式BRE
- linux的kobject分析
- jconsole/JvisualVM 监视jvm和远程tomcat
- 在 Unity3D 中运行外部 shell 脚本的方法
- Nginx 403 Forbidden错误的解决方法
- Makefile选项CFLAGS,LDFLAGS,LIBS
- Linux Bash 程序题解