Windows程序是基于消息的,不管其封装形式如何,最后都要包含如下代码MSG msg;while(GetMesssage(msg)){TranslateMessage(msg);DispatchMessage(msg);}大部分的

用v4l2和framebuffer实现usb摄像头图像采集并显示

前言

很多天了,看了数不尽的论坛和各网站的帖子后,我把我遇到的问题都解决的差不多了,感觉应该是把摄像头跑起来了,但还是遇到了一些问题,似乎是图像处理方面的,我好像解决不了这个问题了,我好想有个人帮帮我。写这篇文章估计得花3~4小时,我真心希望哪位朋友能明白我的想法,能顺手帮帮我。

正文

一,我的思路

我想用一幅图来说明我所做的事情,如图1所示(图中uvcdriver标错了,应该是uvcvideo)。

图1

图1左侧是图像采集,右侧是图像显示。采集的帧速是30 帧/秒。

二,v4l2(video for linux two)

驱动摄像头的是uvcdriver,该驱动设计时采用了v4l系列的标准(该标准好像是linuxTV制定的,linuxTV的官网是),我的CentOS6.3(内核是linux-2.6.32.60)采用的是v4l2标准。一开始我编写应用程序的时候什么都不懂,见论坛上帖子怎么讲,我就怎么写,当中很多是参照v4l标准,我当时不知道,,直接照抄,出了问题,改用v4l2标准后才解决了问题。v4l2

API的在/usr/include/linux/videodev2.h头文件中,很容易就找到了。

我就是借鉴的这个程序,然后得到我的摄像头设备的信息,如图2(那个pixel_format应该用十六进制表示的,我没注意,十六进制的话应该是0x56595559,即YUYV的意思)所示。

图2

一插上摄像头,uvcvideo就直接把我的摄像头识别了。

v4l2我不想再多写了,基本上只要看了那个经典的capture.c就够了。

三,framebuffer

就目前我这水平,我还不想涉及到QT或者别的什么面向对象编程,我想简单一点,慢慢来。于是我直接选择了framebuffer,它的API在usr/include/linux/fb.h头文件中。刚开始用open函数打开/dev/fb0的时候根本就打不开,愣是要把grub设置一下,如图3所示。后面显示的时候要切记切换到命令行模式。

图3

4bit

8bit

15bit

16bit

24bit

32bit

640x400

x

0x300

x

x

x

x

640x480

x

0x301

0x310

0x311

0x312

x

800x600

0x302

0x303

0x313

0x314

0x315

x

1024x768

x

0x305

0x316

0x317

0x318

x

1280x1024

x

0x307

0x319

0x31A

0x31B

x

1600x1200

x

0x31C

0x31D

0x31E

0x31F

x

表1

因为我采集视频的图像时640*480,然后是16bit的BPP,所以我选择了0x311

linux下基于qt和v4l2驱动的usb摄像头视频采集与显示,用v4l2和framebuffer实现usb摄像头视频采集并显示...相关推荐

  1. Linux下基于qt的视频监控系统

    目录 一.原始需求 二.环境安装 2.1 qt安装 2.2 opencv安装 三.系统设计 3.1. 整体流程设计 3.2 .数据传输交互流程 3.3 .数据库设计 四.关键代码 4.1.如何实现通信 ...

  2. Linux 平台下基于Qt 的电子地图的绘制

    Linux 平台下基于Qt 的电子地图的绘制 摘要-------------------------------------------1   关键词------------------------- ...

  3. windows平台下基于QT和OpenCV搭建图像处理平台

        在之前的博客中,已经分别比较详细地阐述了"windows平台下基于VS和OpenCV"以及"Linux平台下基于QT和OpenCV"搭建图像处理框架,并 ...

  4. linux下Qt编写串口调试助手,如何在linux下用QT写一个简单的串口调试助手

    如何在linux下用QT写一个简单的串口调试助手 QT5串口类 在QT5以前,编写串口一般使用的是qextserialport类,但在QT5之后有了QT自带的串口类SerialPort(串口基础类)和 ...

  5. Linux下基于GTK人脸识别界面设计

    Linux下基于GTK人脸识别界面设计 1.人脸识别简介   人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术.用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸, ...

  6. linux系统最好的c类语言开发软件,Linux下基于C 语言开发即时通信软件.doc

    Linux下基于C 语言开发即时通信软件 Linux下基于C++语言开发即时通信软件 关键词:聊天软件 文字聊天 Linux平台 C/S架构ICE中间件 Linux-based instant mes ...

  7. linux离线配置qt环境,Linux下配置QT环境

    一.下载Qt源码包到本机,然后解压缩 #tar zxvf qt-x11-opensource-src-4.3.2.tar.gz -C /usr/local //将qt-x11-opensource-s ...

  8. Linux下基于百度智能云平台人脸识别

    Linux下基于百度智能云平台人脸识别 1.百度智能云接口及简介 https://cloud.baidu.com/product/face   接口技术文档: 2.人脸检测属性分析项目示例  硬件平台 ...

  9. 嵌入式Linux下基于FFmpeg的视频硬件编解码[图]

    转自:http://tech.c114.net/167/a674033.html 摘要: 对FFmpeg多媒体解决方案中的视频编解码流程进行研究.结合对S3C6410处理器视频硬件编解码方法的分析,阐 ...

最新文章

  1. 一致 先验分布 后验分布_浅谈Loki分布式架构中的一致性哈希
  2. 【跃迁之路】【724天】程序员高效学习方法论探索系列(实验阶段481-2019.2.14)...
  3. pandas 修改数据和数据类型
  4. ubuntu 源更新(sources.list)
  5. mysql 去重_mysql 去重留一
  6. js进阶 9-11 select选项框如何动态添加和删除元素
  7. 粗略。。类设计的基本经验3之笔记
  8. java解析url字符串,将字符串解析为URL
  9. PXC集群常见错误(一)
  10. 瑞萨电子推出R-Car Gen3e CPU速度提升达20%
  11. 95-50-030-java.nio.channels-NIO-NIO之拥抱Path和Files
  12. 设计模式面试题_2020年最全设计模式面试题总结!面试再也不用怕!已有千人收藏
  13. FULENT软件测试工程师头像,fluent软件应用超详细实例
  14. 添加最顶层js广告_js实现网站最上边可关闭的浮动广告条代码
  15. 细胞穿膜肽( CPPs)偶联肽核酸H region-PNA|Arg-PNA|Lys-PNA|Cationic-PNA|47Tat57-PNA的特性
  16. 【leetcode】【77】Combinations
  17. CoolWeather地区无法加载
  18. 白杨SEO:微信视频号怎么玩?推广、涨粉、上热门及赚钱技巧大全
  19. 《Serverless 与容器决战在即?有了弹性伸缩就不一样了》
  20. c语言系统通常将一个判断为真,C语言程序设计学习-习题2

热门文章

  1. android dolphin 手柄,使用安卓手机充当PC上WII模拟器手柄
  2. react封装倒计时定时器
  3. 中国大陆,地名和经纬度对应关系:
  4. 服务器hba卡安装系统,hba原理,raid卡,hba卡。
  5. SLAM算法资料收集
  6. 主要的数据仓库开发软件及软件功能比较
  7. ffmpeg截取视频流、rtsp录mp4,与海思NVR,内存问题
  8. linux内核形式化验证,说说形式化验证(Formal Verification)吧
  9. 中粮我买网为何能融资1亿美元?
  10. lammps教程:径向分布函数g(r)的计算与输出方法