zoukankan      html  css  js  c++  java
  • 【MFC两种视频图像採集方法】DirectShow与Opencv

    效果图:


    DirectShow採集核心代码:

    创建线程调用该函数,採集图像通过x264解码封装rtmp协议包。推送至FMSserver,可实现视频直播
    UINT __stdcall StartVideo(void *c)
    {
    	CVideoConf *conf = (CVideoConf *)c;
    	int vid = conf->code;
    	CString strurl(conf->rtmpurl);
    	CWnd *pW = conf->pW;
    
    	CCameraDS  camera;
    	if (!camera.OpenCamera(0,false));
    	{  
    		TRACE("OpenCamera error.....");  
    	}
    
    	while(true)
    	{
    		CvvImage cimg;
    		CRect rect;
    		
    		IplImage *m_Frame ;
    		BYTE *data1 =  camera.QueryFrame(); 
    		m_Frame = cvCreateImageHeader(cvSize(320,240),IPL_DEPTH_8U,3);
    		m_Frame->origin = 1;
    		cvSetData(m_Frame,data1,320*3);
    
    		CDC *pDC = pW->GetDC();                                                        
    		HDC hDC  = pDC->GetSafeHdc();
    		pW->GetClientRect(&rect); 
    		cimg.CopyOf((IplImage *)m_Frame); //复制图片
    		cimg.DrawToHDC(hDC, &rect);	 //显示指定区域
    		HWND hWnd = pW->GetSafeHwnd();                                  
    		ReleaseDC(hWnd,hDC); 
    
    	}
    
    
    	return 0;	
    }

    Opencv採集核心代码:

    UINT __stdcall StartVideo(void *c)
    {
    	CVideoConf *conf = (CVideoConf *)c;
    	int vid = conf->code;
    	CString strurl(conf->rtmpurl);
    	CWnd *pW = conf->pW;
    
    	CCameraDS  camera;
    	if (!camera.OpenCamera(0,false));
    	{  
    		TRACE("OpenCamera error.....");  
    	}
    	CvCapture* pCapture = cvCreateCameraCapture(0); //opencv打开视频 
    	while(true)
    	{
    		CvvImage cimg;
    		CRect rect;
    		
    		IplImage *m_Frame=cvQueryFrame( pCapture );//opencv捕获帧 
    
    		CDC *pDC = pW->GetDC();                                                        
    		HDC hDC  = pDC->GetSafeHdc();
    		pW->GetClientRect(&rect); 
    		cimg.CopyOf((IplImage *)m_Frame); //复制图片
    		cimg.DrawToHDC(hDC, &rect);	 //显示指定区域
    		HWND hWnd = pW->GetSafeHwnd();                                  
    		ReleaseDC(hWnd,hDC); 
    
    	}






  • 相关阅读:
    linux常用命令整理
    总结五大常用算法!
    python数组(列表、元组及字典)
    网络编程---笔记1
    python3与python2的区别 记录一波
    Python学习week3-python数据结构介绍与列表
    Python学习week2-python介绍与pyenv安装
    Python学习week1-linux文件系统与IO重定向
    Python学习week1-计算机基础
    css3文本多行省略
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5125392.html
Copyright © 2011-2022 走看看