文档章节

opencv+directshow采集视频图像

来来叔叔
 来来叔叔
发布于 2017/08/04 23:57
字数 329
阅读 5
收藏 0
点赞 0
评论 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好像会闪烁的。

© 著作权归作者所有

共有 人打赏支持
来来叔叔
粉丝 0
博文 100
码字总数 55732
作品 0
广州
高级程序员
《视频直播技术详解》系列之一:视频采集和处理

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

ljianbing ⋅ 2017/05/03 ⋅ 0

OneAPM大讲堂 | 基于图像质量分析的摄像头监控系统的实现

今天咱们要介绍的技术很简单,请看场景: 你在家里安装了几个摄像头想监视你家喵星人的一举一动,然而,就在喵星人准备对你的新包发动攻击的时候,图像突然模糊了。毕竟图像模糊了以后你就没...

OneAPM蓝海讯通 ⋅ 02/06 ⋅ 0

Android视频直播的实现(推流完整实现001)

http://blog.csdn.net/huaxun66/article/details/53427771 http://blog.csdn.net/huaxun66/article/details/53427771 最近一段时间,视频直播可谓大火。在视频直播领域,有不同的商家提供各种...

stn_lcd ⋅ 2017/02/20 ⋅ 0

朗锐智科图像采集卡在车流量检测的应用

如今是智能交通时代,车流量的检测方法虽然有很多种,但是,这些方法中多多少少还是存在了一定的弊端。 图像采集卡 例如,超声波频检测技术:采取接收从车辆或地面反射回来的超声波来判断有无...

gunser ⋅ 05/02 ⋅ 0

视频会议及流媒体十大开源项目

在视频会议领域,有许多可以值得参考的开源项目,这些开源项目有的是协议栈、有的是编码器或者是传输协议,由于视频会议系统是一个综合性的应用系统,里面包含功能较多,如能把这些开源项目选...

张旭0512 ⋅ 2014/09/18 ⋅ 1

iOS RTMP 视频直播

这里简单说下 iOS 的摄像头采集。 首先初始化AVCaptureSession 设置采集的 Video 和 Audio 格式,这两个是分开设置的,也就是说,你可以只采集视频。 实现 AVCaptureOutputDelegate: 配置完...

SimonXun ⋅ 2016/07/19 ⋅ 0

树莓派拍照工具raspistill

Raspberry Pi 相机设置教程 https://www.rs-online.com/designspark/chi-pi-cam-setup-tutorial ["raspistill", "-t", "0.1/1/5", "-w", "300", "-h", "500" ] 说明: 红色标注参数,只能是正......

枫TI ⋅ 2016/12/20 ⋅ 0

基于Faster-RCNN的红绿灯检测开发文档

0 前言 这是之前做过的一个红绿灯检测的小小实践,现以“软件工程文档”的形式整理以下。只是一个总体的流程,不会面面俱到,介绍太多的细节,有问题的朋友,欢迎交流,也请大神不吝赐教。 ...

learning_tortosie ⋅ 04/16 ⋅ 0

Linux下基于v4l2框架的图像采集

对于linux下笔记本内置摄像头图像采集,一开始也挺头大的,怎样去驱动笔记本内置摄像头呢?伟大的互联网告诉我们这都不叫事。通过 lsusb查看摄像头信息,如果不明显,可以用lsusb -v|less 查...

坡后村 ⋅ 2016/04/21 ⋅ 0

只要花3K 手把手教你制作炫酷的MR混合现实视频

混合现实(下称MR:Mixed Rality)视频是介绍虚拟环境最酷的方式之一。外媒uploadvr发表了一篇详细的拍摄器材和步骤,来介绍如何制作这种视频。制作视频的时候, 你需要两台相机, 一台相机拍...

robslove ⋅ 2016/11/24 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring发展历程总结

转自与 https://www.cnblogs.com/RunForLove/p/4641672.html 目前很多公司的架构,从Struts2迁移到了SpringMVC。你有想过为什么不使用Servlet+JSP来构建Java web项目,而是采用SpringMVC呢?...

onedotdot ⋅ 44分钟前 ⋅ 0

Python模块/包/库安装(6种方法)

Python模块/包/库安装(6种方法) 冰颖机器人 2016-11-29 21:33:26 一、方法1: 单文件模块 直接把文件拷贝到 $python_dir/Lib 二、方法2: 多文件模块,带setup.py 下载模块包(压缩文件zip...

cswangyx ⋅ 今天 ⋅ 0

零基础学习大数据人工智能,学习路线篇!系统规划大数据之路?

大数据处理技术怎么学习呢?首先我们要学习Python语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后。 Python:Python 的排名从去年开始就借助人工智能持续上升,现在它已经...

董黎明 ⋅ 今天 ⋅ 0

openJdk和sun jdk的区别

使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的OpenJDK, 那么到底什么是OpenJDK,它与SUN JDK有什么关系和区别呢? 历史上的原因是,Ope...

jason_kiss ⋅ 今天 ⋅ 0

梳理

Redux 是 JavaScript 状态容器,提供可预测化的状态管理。 它是JS的状态容器,是一种解决问题的方式,所以即可以用于 react 也可以用于 vue。 需要理解其思想及实现方式。 应用中所有的 stat...

分秒 ⋅ 今天 ⋅ 0

Java 后台判断是否为ajax请求

/** * 是否是Ajax请求 * @param request * @return */public static boolean isAjax(ServletRequest request){return "XMLHttpRequest".equalsIgnoreCase(((HttpServletReques......

JavaSon712 ⋅ 今天 ⋅ 0

Redis 单线程 为何却需要事务处理并发问题

Redis是单线程处理,也就是命令会顺序执行。那么为什么会存在并发问题呢? 个人理解是,虽然redis是单线程,但是可以同时有多个客户端访问,每个客户端会有 一个线程。客户端访问之间存在竞争...

码代码的小司机 ⋅ 今天 ⋅ 0

到底会改名吗?微软GVFS 改名之争

微软去年透露了 Git Virtual File System(GVFS)项目,GVFS 是 Git 版本控制系统的一个开源插件,允许 Git 处理 TB 规模的代码库,比如 270 GB 的 Windows 代码库。该项目公布之初就引发了争...

linux-tao ⋅ 今天 ⋅ 0

笔试题之Java基础部分【简】【二】

1.静态变量和实例变量的区别 在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变...

anlve ⋅ 今天 ⋅ 0

Lombok简单介绍及使用

官网 通过简单注解来精简代码达到消除冗长代码的目的 优点 提高编程效率 使代码更简洁 消除冗长代码 避免修改字段名字时忘记修改方法名 4.idea中安装lombnok pom.xml引入 <dependency> <grou...

to_ln ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部