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); 
    
    	}






  • 相关阅读:
    Web crawler study(1)
    SNMP
    Locked the resolv.conf via command chattr
    HTML 父窗口打开子窗口,并从子窗口返回值
    混合语言学习(一)
    Auto Scale TextView Text to Fit within Bounds
    Android SeekBar size
    Android设置全局字体
    PopupMenu使用,PopupMenu背景的设置
    Android-屏幕适配全攻略
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5125392.html
Copyright © 2011-2022 走看看