【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,如需转载请自行联系原作者
相关文章
|
算法 C++ 计算机视觉
OpenCV-图像像素遍历操作的三种方法对比(程序提速)
OpenCV-图像像素遍历操作的三种方法对比(程序提速)
246 0
|
5月前
|
存储 编解码 API
python多种方法压缩图片,opencv、PIL、tinypng、pngquant压缩图片
python多种方法压缩图片,opencv、PIL、tinypng、pngquant压缩图片
375 1
|
5月前
|
算法 定位技术 vr&ar
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
901 0
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
|
6月前
|
机器学习/深度学习 传感器 算法
OpenCV4工业缺陷检测的六种方法
OpenCV4工业缺陷检测的六种方法
|
6月前
|
算法 计算机视觉 索引
python---OpenCv(二),背景分离方法较有意思
python---OpenCv(二),背景分离方法较有意思
|
6月前
|
计算机视觉 Python
opencv 处理图像去噪的几种方法学习
OpenCV 提供了多种图像去噪的方法,以下是一些常见的去噪技术以及相应的 Python 代码示例: 均值滤波:使用像素邻域的灰度均值代替该像素的值。
81 0
|
7月前
|
算法 计算机视觉
如何判断点在多边形内部:OpenCV--cv2.pointPolygonTest()方法详解
如何判断点在多边形内部:OpenCV--cv2.pointPolygonTest()方法详解
|
8月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
OpenCV读取tensorflow 2.X模型的方法:将SavedModel转为frozen graph
【2月更文挑战第22天】本文介绍基于Python的tensorflow库,将tensorflow与keras训练好的SavedModel格式神经网络模型转换为frozen graph格式,从而可以用OpenCV库在C++等其他语言中将其打开的方法~
165 1
OpenCV读取tensorflow 2.X模型的方法:将SavedModel转为frozen graph
|
8月前
|
定位技术 计算机视觉 C++
C++计算机视觉库OpenCV在Visual Studio 2022的配置方法
C++计算机视觉库OpenCV在Visual Studio 2022的配置方法
280 1
|
8月前
|
机器学习/深度学习 传感器 算法
带你了解OpenCV4工业缺陷检测的六种方法
带你了解OpenCV4工业缺陷检测的六种方法
171 0