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

	}








本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5125392.html,如需转载请自行联系原作者
相关文章
|
5月前
|
计算机视觉
[Qt&MFC] 各种方式的图像读取(OpenCv、Halcon)
[Qt&MFC] 各种方式的图像读取(OpenCv、Halcon)
39 0
|
存储 人机交互 数据安全/隐私保护
OpenCV和MFC的超混沌图像加密
OpenCV和MFC的超混沌图像加密
114 0
OpenCV和MFC的超混沌图像加密
|
计算机视觉 C++ Windows
解决MFC使用OpenCV动态库会误报内存泄露的问题(太多人遇到这个问题了)
解决MFC使用OpenCV动态库会误报内存泄露的问题(太多人遇到这个问题了)
407 0
解决MFC使用OpenCV动态库会误报内存泄露的问题(太多人遇到这个问题了)
|
.NET C# 计算机视觉
为基于OpenCV的图像处理程序编写界面—关于QT\MFC\CSharp的选择以及GOCW的介绍
基于OpenCV编写图像处理项目,除了算法以外,比较重要一个问题就是界面设计问题。对于c++语系的程序员来说,一般来说有QT/MFC两种考虑。QT的确功能强大,特别是QML编写android界面很有一套(https://www.cnblogs.com/jsxyhelu/p/8286476.html),在树莓派上进行设计也很方便(https://www.cnblogs.com/jsxyhelu/p/7839062.html);但是使用QT的一个现实问题就是和现有平台的结合,比如客户需要将结果导出到excel中,使用QT就比较别扭(当然不是说不可以)。
2287 0
|
计算机视觉
基于opencv和mfc的摄像头采集代码(GOMFCTemplate2)持续更新
      编写带界面的图像处理程序,选择opencv+mfc是一种很好的选择;在读取摄像头数据方面,网上的方法很多,其中shiqiyu的camerads的方法是较好的。       基于现有资料,通过在实际项目中的积累,我总结出来一套结合opencv和mfc的摄像头采集框架。
1622 0
|
算法 计算机视觉 索引
基于Opencv和Mfc的图像处理增强库GOCVHelper(索引)
GOCVHelper(GreenOpen Computer Version Helper )是我在这几年编写图像处理程序的过程中积累下来的函数库。主要是对Opencv的适当扩展和在实现Mfc程序时候的功能增强。
1389 0
|
计算机视觉
1.0.1-学习Opencv与MFC混合编程之---播放AVI视频
资源源代码:http://download.csdn.net/detail/nuptboyzhb/3961639 版本1.0.1新增内容 Ø  新建菜单项,Learning OpenCV——> OpenCVr入门——>播放AVI视频。
936 0
|
计算机视觉
1.0.2-学习Opencv与MFC混合编程之---为播放AVI视频添加滑动条
源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961642 版本1.0.2新增内容 Ø  全局变量和函数的添加: 在CVMFCview.cpp文件中增加全局变量和全局函数 //-----------------全局变量和函数-------...
877 0
|
计算机视觉
1.0.3-学习Opencv与MFC混合编程之---打开本地摄像头
源代码:http://download.csdn.net/detail/nuptboyzhb/3961643 版本1.0.3新增内容 打开摄像头 Ø 新建菜单项,Learning OpenCV——> OpenCVr入门——>打开摄像头(c) Ø 菜单项设置如下: Ø 建立类向导 Ø 编辑...
1021 0
|
计算机视觉
1.0.x-学习Opencv与MFC混合编程之---视频运动检测
源代码地址: http://download.csdn.net/detail/nuptboyzhb/3961668 版本1.0.x新增内容 视频运动检测 Ø 新建菜单项,Learning OpenCV——> OpenCVr入门——>视频运动检测 Ø 菜单项设置如下: Ø 建立类向导 ...
1023 0