博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【MFC两种视频图像採集方法】DirectShow与Opencv
阅读量:6594 次
发布时间:2019-06-24

本文共 1673 字,大约阅读时间需要 5 分钟。

效果图:

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,如需转载请自行联系原作者
你可能感兴趣的文章
中国式危机公关9加1策略(第十四章 国外危机应对案例參考)
查看>>
CKEditor上传插件
查看>>
Java 缩放图片工具类,创建缩略图、伸缩图片比例
查看>>
Rebuild Instance 操作详解 - 每天5分钟玩转 OpenStack(37)
查看>>
利用scp传输文件小结
查看>>
面向对象设计模式纵横谈:Factory Method 工厂方法模式(笔记记录)
查看>>
C++使用hiredis连接带密码的redis服务
查看>>
SQL SERVER 批量生成编号
查看>>
thinkjs——一个字段一种数字代表两种状态
查看>>
C++的那些事:类的拷贝控制
查看>>
numpy得到数组的index
查看>>
JSP页面重定向
查看>>
RecyclerView具体解释
查看>>
vue2.0 vue-loader
查看>>
美国埃博拉患者是怎样治愈的?
查看>>
[离散时间信号处理学习笔记] 9. z变换性质
查看>>
简单实用SQL脚本Part:查找SQL Server 自增ID值不连续记录
查看>>
关系型数据库的分片原则
查看>>
浅谈线段树中加与乘标记的下放
查看>>
【IDEA】IDEA中maven项目pom.xml依赖不生效解决
查看>>