文档章节

opencv+directshow采集视频图像

来来叔叔
 来来叔叔
发布于 2017/08/04 23:57
字数 329
阅读 390
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

 

主要参考:
http://www.opencv.org.cn/index.php/%E4%BD%BF%E7%94%A8DirectShow%E9%87%87%E9%9B%86%E5%9B%BE%E5%83%8F

CCameraDS类调用采集函数可直接返回IplImage,使用更方便,且集成了DirectShow,勿需安装庞大的DirectX/Platform SDK。
但是文中介绍的方法只能显示在OPENCV创建的窗口中,无法控制它的窗口。而且试图关闭它的窗口时,程序就会死掉。

下面的方法可以把视频显示在窗体中的控件中。
关键代码:

(1) 启动视频函数
int CCarDemoView::StartVideo()
{

CCameraDS camera;
int cam_count;

//获取摄像头数目
cam_count = CCameraDS::CameraCount();
printf("There are %d cameras.\n", cam_count);

if(cam_count==0)
   return -1;


if(! camera.OpenCamera(0, 0))
{
   AfxMessageBox("不能打开摄像头!");
   return -1;
}

CString name;
while(1)
{
   IplImage *pFrame;
   
   //获取一帧视频图像
   pFrame = camera.QueryFrame();

   name="C:\\My pictures\\test.bmp";
   cvSaveImage(name,pFrame);   // 保存采集到的图像
  
   //显示到控件所在的区域
   DrawPicToHDC(pFrame, IDC_VIDEO0);

  
   Sleep(100);
}

camera.CloseCamera(); //可不调用此函数,CCameraDS析构时会自动关闭摄像头
return 0;
}

(2)显示子函数
//将图像显示到一个static控件中
void CCarDemoView::DrawPicToHDC(IplImage *img, UINT ID)

{
CDC *pDC = GetDlgItem(ID)->GetDC();
HDC hDC= pDC->GetSafeHdc();
CRect rect;
GetDlgItem(ID)->GetClientRect(&rect);
CvvImage cimg;

cimg.CopyOf(img);
cimg.DrawToHDC(hDC,&rect);

ReleaseDC(pDC);
}

忘了说一下了:StartVideo()是用一个线程调用的,用OnTimer好像会闪烁的。

© 著作权归作者所有

来来叔叔
粉丝 1
博文 100
码字总数 55732
作品 0
广州
高级程序员
私信 提问
加载中

评论(0)

《视频直播技术详解》系列之一:视频采集和处理

直播中的各个环节: 1.采集 采集是播放环节中的第一环,iOS 系统因为软硬件种类不多,硬件适配性较好,所以比较简单。Android 则不同,市面上硬件机型非常多,难以做到一个库适配所有硬件。P...

ljianbing
2018/06/26
0
0
基于Video4Linux的视频采集模块开发(转)

Linux系统中,摄像头驱动程序安装好后,为了进行视频采集必须加入Video4Linux模块,从而可以通过Video4Linux模块提供的编程接口(API)从摄像头设备中获取图像帧。下面具体研究基于V4L的视频采...

天王盖地虎626
2019/01/11
32
0
安防视频监控直播的画面都是如何采集的?

我们公司这几天在做摄像头对接流媒体服务器推流的测试,突然想起来我好像还没有就直播画面的采集写过什么,所以今天我就来讲一下采集。采集是整个视频推流过程中的第一个环节,它从系统的采集...

Black_3717
03/31
0
0
C#开源录音组件、录像组件、录屏组件及demo源码

在多媒体系统中,一般都会涉及到录音、录像、录屏问题,采集得到的数据可以用来传输、播放、或存储。所以,对于像课件录制系统、语音视频录制系统、录屏系统等,多媒体数据的采集就是最基础的...

osc_tlt7xl5y
2019/05/24
6
0
(原创)基于ZedBoard的Webcam设计(三):视频的采集和动态显示

在(原创)基于ZedBoard的Webcam设计(一):USB摄像头(V4L2接口)的图片采集和(原创)基于ZedBoard的Webcam设计(二):USB摄像头图片采集+QT显示两篇博客中,我们完成了ZedBoard上USB摄像头的图片采...

超群天晴
2013/01/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周五乱弹 —— 头发和不要头发,你总要选一个

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《雾 缀じた街 ふたつのかげ》- Porkkana 手机党少年们想听歌,请使劲儿戳(这里)...

小小编辑
16分钟前
29
0
一道 算法题 引发的 ‘xx现场’

请 熟悉的语言 去 验证 在输入框中输入的是否是一个正确的网址 初次读题萌新有点 不知所措的样子一查 MDN 吓一跳 ----- 一个不怎么熟悉的方法跳出眼边URL() 构造函数返回一个新创建的 ...

酒窝yun过去了
24分钟前
0
0
如何检查jQuery中是否已选中复选框? - How to check whether a checkbox is checked in jQuery?

问题: I need to check the checked property of a checkbox and perform an action based on the checked property using jQuery. 我需要检查复选框的checked属性,并使用jQuery根据check......

技术盛宴
26分钟前
12
0
mongoose 使用

http://www.mongoosejs.net/ 编写MongoDB验证,转换和业务逻辑是非常麻烦的. 所以Mongoose应运而生了. const mongoose = require('mongoose');mongoose.connect('mongodb://localhost/te......

东东笔记
32分钟前
10
0
微服务

什么是微服务? 使用一套小服务来开发单个应用的方式,每个服务运行在独立的进程里,一般采用轻量级的通讯机制互联,并且他们可以通过自动化的方式部署。 微服务的特征 单一职责 轻量级通信 ...

鸿FW
56分钟前
23
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部