首页| 论坛| 消息

标题:Qt音视频开发38-USB摄像头解码linux方案
作者:liudianwu
日期:2020-10-21 12:45
内容:

## 一、前言
做嵌入式linux上的开发很多年了,扳手指头算算,也起码9年了,陆陆续续做过很过诸如需要读取外接的USB摄像头或者CMOS摄像机的程序,实时采集视频,将图像传到前端,或者对图像进行人脸分析处理,最开始尝试的就是QCamera来处理,直接歇菜放弃,后面通过搜索发现都说要用v4l2视频框架来进行,于是东搞搞西搞搞尝试了很多次,终于整出来了,前后完善了好几年,无论写什么程序,发现要简简单单的实现基础的功能,都是非常快速而且容易的,但是想要做得好做得精,要花不少的精力时间去完善,适应各种不同的场景,比如就说用v4l2加载摄像头这个,需要指定设备文件来读取,而现场不可能让用户来给你指定,频繁的拔插也会导致设备文件名的改动,所以必须找到一个机制自动寻找你想要的摄像机的设备文件名称,比如开个定时器去调用linux命令来处理,甚至在不同的系统平台上要执行的命令还有些许的区别,如果本地有多个摄像头还需要区分左右之类的时候,那就只能通过断电先后上电顺序次序来区分了。
linux方案处理流程:
1. 调用封装的函数findCamera实时查找摄像头设备文件名。
2. 调用::open函数打开设备文件。
3. 调用封装的函数initCamera初始化摄像头参数(图片格式、分辨率等)。
4. 调用::select函数从缓冲区取出一个缓冲帧。
5. 缓冲帧数据是yuyv格式的,需要转换rgb24再转成QImage。
6. 拿到图片进行绘制、人脸分析等。
7. 关闭设备文件。
## 二、功能特点
1. 同时支持windows、linux、嵌入式linux上的USB摄像头实时采集。
2. 支持多路USB摄像头多线程实时采集。
3. 在嵌入式linux设备上,自动查找USB设备文件并加载。
4. 可手动设置设备文件名称,手动设置后按照手动设置的设备文件加载。
5. 在嵌入式linux设备上支持人脸识别接口,实时绘制人脸框。
6. 具有打开、暂停、继续、关闭、截图等常规功能。
7. 可设置两路OSD标签,分别设置文本、颜色、字号、位置等。
8. 可作为视频监控系统使用。
## 三、效果图


## 四、相关站点
1. 国内站点:[https://gitee.com/feiyangqingyun/QWidgetDemo](https://gitee.com/feiyangqingyun/QWidgetDemo)
2. 国际站点:[https://github.com/feiyangqingyun/QWidgetDemo](https://github.com/feiyangqingyun/QWidgetDemo)
3. 个人主页:[https://blog.csdn.net/feiyangqingyun](https://blog.csdn.net/feiyangqingyun)
4. 知乎主页:[htt ..

回复 发表
主题 版块