Opencv+VS+MFC 播放视频(cv 2.3+版本)

  • 配置环境,可以参考VS2013配置OpenCv3.0
  • 建立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。
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值