在linux下所有设备都是文件。所以对摄像头的操作其实就是对文件的操作。USB摄像头的设备文件就是在/dev目录下的video0(假如只有一个摄像头)。在linux下操作摄像头就是使用v4l2对摄像头进行视频的操作,操作步骤如下1. 打开设备文件。

int fd=open(”/dev/video0″,O_RDWR);

2. 取得设备的capability,看看设备具有什么功能,比如是否具有视频输入,或者音频输入输出等。VIDIOC_QUERYCAP,struct v4l2_capability

1

2

3

4

5

6

7

8

9

10

v4l2_std_id std;

do {

ret= ioctl(fd, VIDIOC_QUERYSTD, &std);

} while (ret == -1 && errno == EAGAIN);

switch (std) {

case V4L2_STD_NTSC:

//……

case V4L2_STD_PAL:

//……

}

3. 选择视频输入,一个视频设备可以有多个视频输入。VIDIOC_S_INPUT,struct v4l2_input(可不要)

4. 设置视频的制式和帧格式,制式包括PAL,NTSC,帧的格式个包括宽度和高度等。

VIDIOC_S_STD,VIDIOC_S_FMT,struct v4l2_std_id,struct v4l2_format

1

2

3

4

5

6

7

8

9

10

11

struct v4l2_format fmt;

memset ( &fmt, 0, sizeof(fmt) );

fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

fmt.fmt.pix.width = 320;

fmt.fmt.pix.height = 240;

fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_JPEG;

if (ioctl(fd, VIDIOC_S_FMT, &fmt) < 0)

{

printf("set format failed\n");

//return 0;

}

5. 向驱动申请帧缓冲,一般不超过5个。struct v4l2_requestbuffers

1

2

3

4

5

6

7

8

9

10

struct v4l2_requestbuffers req;

memset(&req, 0, sizeof (req));

req.count = 4;

req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

req.memory = V4L2_MEMORY_MMAP;

if (ioctl(fd,VIDIOC_REQBUFS,&req) == -1)

{

perror("VIDIOC_REQBUFS error \n");

//return -1;

}

6.申请物理内存

将申请到的帧缓冲映射到用户空间,这样就可以直接操作采集到的帧了,而不必去复制。将申请到的帧缓冲全部入队列,以便存放采集到的数据.VIDIOC_QBUF,struct v4l2_buffer

取消

评论

linux下usb的热插拔监控,怎么linux下检测 usb摄像头热插拔事件相关推荐

  1. linux 查看tdagent进程,Zabbix监控记录linux服务器近期的登录情况

    通过zabbix自定义Items来监控服务器半年内的登录次数信息.开始配置之前,需要编写脚本,用于获取服务器的登录情况,脚本如下:[root@hm 09:14 AM ~ 1119]# cat logo ...

  2. Linux下自动检测USB热插拔

    做嵌入式开发,尤其在网关.路由器或者其他支持USB设备的终端上,为了提高用户体验,我们常常需要支持自动识别并挂载USB设备功能.某些应用程序,在使用USB设备的过程中,也希望能够侦测到USB断开事件, ...

  3. linux的usb驱动失败,linux2.6.24下usb驱动完成情况及问题解决

    1.在kernel启动是出现如下问题: mount: mounting tmpfs on /dev failed 解决方案如下, File systems  --->Pseudo filesys ...

  4. linux下构建Zabbix网络监控平台

    linux下构建Zabbix网络监控平台 由于图片过多,本人不想一张一张上传,请下载我的详细文章: linux下构建zabbix网络监控平台[技术文档](河南-清小小)-下载地址: http://do ...

  5. linux下进程监控6,Linux进程监控技术—精通软件性能测试与LoadRunner最佳实战(6)...

    8.2.5  Linux操作系统进程监控技术 Linux在进程监控方面同样出色,不仅可以通过图形用户界面的管理工具,还可以用命令方式显示进程相关信息.像"Windows的任务管理器" ...

  6. linux下构建Smokeping网络监控平台

    linux下构建Smokeping网络监控平台 一. Smokeping 简介 1.1 Smokeping简介: Smokeping 是rrdtool 的作者Tobi Oetiker 的作品,是用Pe ...

  7. linux安防监控,Linux平台下的安防监控系统设计与实现

    摘要: 随着经济的飞速发展和科技进步,人们越来越关注居家安全,安防产品应运而生,其中安防监控系统更是备受关注.本文以提高安防系统的智能化水平为目标,设计和实现了一款Linux平台下的安全防范监控系统. ...

  8. linux 温度控制软件,linux下的cpu温度监控软件 lm-sensors

    linux下的cpu温度监控软件 lm-sensors 发布时间:2008-09-05 00:27:46来源:红联作者:PCHCO 现在购买主机板时都会有厂商提供的监控软体可以使用,而最常使用到到功能 ...

  9. Linux下常用的系统监控软件

    转载:http://blog.chinaunix.net/uid-25266990-id-3380929.html Linux下常用的系统监控软件有Nagios.Cacti.Zabbix.Monit等 ...

最新文章

  1. Linux高性能网络:协程系列09-协程性能测试
  2. NDK相关概念与NDK开发步骤
  3. POI Excel表格合并,边框设置
  4. FFmpeg windows下载安装
  5. 【Java语法】关于使用new和不使用new的数组值传递还是引用传递的问题
  6. 状态管理工具vuex的基本使用(vuebus的理解)
  7. C#对用户密码使用MD5加密与解密
  8. python 按条件选择行和列数据_小白学数据结构-排序算法Python(冒泡、选择、快速、希尔等等)...
  9. 华为云实时数据处理“三剑客”
  10. Unity2D 小游戏之 RocketMouse
  11. PandasSQL数据处理对比
  12. 谷歌Cloud、Paly 中的XSS 漏洞可导致账户劫持
  13. 微信公众号注册已达上限怎么办?提升限额方法来了
  14. Python基于OpenCV的实时疲劳检测[源码&演示视频&部署教程]
  15. unity调用高德地图
  16. 第一讲:计算机基本结构
  17. win10右键闪退到桌面_win10打开控制面板总闪退弹回桌面怎么办
  18. 用Python基本语法实现一个购物车功能
  19. 小雉配置--支持向上向下兼容的 配置文件 兼容性 设计
  20. 国产车规级MCU芯片又添一重量级成员,这次竟是国家队?稳了

热门文章

  1. 《孙子初问世》--游戏策划书
  2. linux执行系统命令卡死问题解决
  3. 人生啊,没有过不去的坎
  4. Java—异或运算^的使用详解
  5. w3school教程
  6. 斐波那契尾递归函数java_尾递归实现斐波那契数列
  7. linux 进程 系统调用,linux进程与系统调用
  8. 通俗理解kaggle比赛大杀器xgboost
  9. k8s pod 详解
  10. eccel身份证截取指定格式日期插入10000条序号