这几天在学习韦东山老师的智能监控方案,教程是免费的,链接如下:
https://www.100ask.net/detail/p_5f0fc9e9e4b0ee0b8872c2c3/6
看过韦东山第三期或者是正点原子imx6ull的教程,都可以做此实验。
硬件要求:imx6ull开发板、一款USB摄像头。
软件要求:ubuntu虚拟机、需要会搭建tftp和nfs环境、需要会buildroot编译根文件系统、需要会编译Linux内核。
在后台回复【摄像头】,我把整理的搭建环境的pdf放进去了,照着视频教程和pdf教程即可,不会的可以后台私聊博主。
说明:博主并没有使用下载emmc镜像的方式,而是使用 tftp 下载内核和设备树, nfs 网络挂载根文件系统。
调通了局域网的视频监控,效果如下:
实现框架:
答案:在windows下设备管理器,点击摄像头,右键查看属性,会出现ID。或者在Linux下,插入USB摄像头,输入lsusb,可以看到ID。ID分为VID和PID,根据USB规范的规定,所有的USB设备都有供应商ID(VID)和产品识别码(PID),主机通过不同的VID和PID来区别不同的设备。
这里显示的是05a3:9230。
Linux2.6以后,已经将很多USB摄像头的UVC驱动写好了,具体支不支持这一款摄像头,这里有一个网址可以查看:
http://www.ideasonboard.org/uvc/
如果自己的摄像头ID在列表中,说明绝对支持,如果不在里面,也有可能支持,也有可能不支持,看情况,比如我的ID为05a3:9230,不在这个列表中,但是却支持,因为有一些芯片实际上驱动代码是相同的。如果自己新买一个,最好是买支持的,比如罗技C270,或者博主在淘宝买的这个:
在windows下,很简单,打开PotPlayer或者其他电脑视频软件,选择打开摄像头,就可以看到图像:
在Linux下,有几个软件可以测试自己的摄像头:
1、webcam
2、spcaview
3、luvcview
4、guvcview
5、xawtv
spcaview是编译安装,剩下的sudo apt-get install ... 即可,博主亲测xawtv和guvcview是可以显示图像的,guvcview界面很友好,推荐。命令:guvcview /dev/videoX ,效果如图:
在Linux内核源码目录下,输入make menuconfig,路径为Device Drivers/Multimedia support/Media USB Adapters/USB Video Class。另外一般也把Device Drivers/Multimedia support/V4L platform devices打开。
保存一下配置,然后编译。注意不要用正点原子原版编译脚本编译,他会采用deconfig,会把你的配置取消。
编译完成后,会在arch/arm/boot产生新的zImage内核,在arch/arm/boot/dts产生新的设备树。
一开始教程中,我们已经在 buildroot 中打开了MJPG-Streamer,编译出根文件系统后,此时的根文件系统rootfs已经包含了MJPG-Streamer软件。
这时候按照韦东山老师的视频教程操作即可。
感性的解释下什么叫UVC:在windows下,一个USB摄像头插入电脑主机,会自动加载驱动程序,一般都没问题。在Linux下,如果Linux内核没有给你写好UVC驱动,你就要自己写摄像头驱动,我们知道USB协议是比较难的,更别说在此基础上加上视频传输,所以如果不是Linux内核集成了很多现成的UVC驱动,我们自己从零调试也是很难的。
UVC出现的原因:UVC的出现主要是为了统一日益增多的摄像头视频接口,一个USB接口非常方便。
·················· END ··················
本文分享自 嵌入式Linux系统开发 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!