RK3588 ArmSoM-W3开发板 之 USB摄像头图像预览

硬件准备
开发板(-w3)、USB摄像头(罗技高清网络摄像机 C93)、1000M光纤 、 串口调试工具
v4l2采集画面
v4l2-ctl是一个用于Linux系统的命令行实用程序,用于控制视频4 Linux 2(V4L2)设备 。V4L2是Linux内核中的视频设备驱动框架,用于支持各种摄像头、摄像头和视频采集设备 。
将USB摄像头插入开发板后,会有如下打印:
[14720.842825] usb 7-1: new low-speed USB device number 2 using xhci-hcd[14720.986597] usb 7-1: New USB device found, idVendor=413c, idProduct=301a, bcdDevice= 1.00[14720.986638] usb 7-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0[14720.986653] usb 7-1: Product: Dell MS116 USB Optical Mouse[14720.986667] usb 7-1: Manufacturer: PixArt[14721.008123] input: PixArt Dell MS116 USB Optical Mouse as /devices/platform/usbdrd3_1/fc400000.usb/xhci-hcd.5.auto/usb7/7-1/7-1:1.0/0003:413C:301A.0001/input/input5
使用v4l2-ctl --list-来获取usb摄像头的节点:
【RK3588ArmSoM-W3开发板之 USB摄像头图像预览】root@linaro-alip:~# v4l2-ctl --list-devicesrk_hdmirx (fdee0000.hdmirx-controller):/dev/video20rkisp-statistics (platform: rkisp):/dev/video18/dev/video19rkcif-mipi-lvds2 (platform:rkcif):/dev/media0rkisp_mainpath (platform:rkisp0-vir0):/dev/video11/dev/video12/dev/video13/dev/video14/dev/video15/dev/video16/dev/video17/dev/media1罗技高清网络摄像机 C93 (usb-fc880000.usb-1):/dev/video21/dev/video22/dev/media2
运行 v4l2-ctl -d /dev/ --list--ext 命令可以查看你的摄像头支持的格式:
从这个命令可以看到这款摄像头支持两种格式“YUYV” “MJPG”.
摄像头YUYV格式画面采集
介绍一些常用的v4l2-ctl命令选项和功能
v4l2-ctl -d /dev/video21 -D // 确认video节点v4l2-ctl -d /dev/video21 --get-fmt-video // 确认分辨率和图像格式v4l2-ctl -d /dev/video21 --get-dv-timings //获取当前timingsv4l2-ctl -d /dev/video21 --query-dv-timings // 实时查询timings
查看当前参数:使用v4l2-ctl -d /dev/ -l命令,将显示当前连接到/dev/设备的所有控制参数和其当前值 。
设置视频格式和帧率:通过指定视频格式和帧率来配置摄像头,例如:

RK3588  ArmSoM-W3开发板  之 USB摄像头图像预览

文章插图
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1280,height=720,pixelformat=YUYVv4l2-ctl -d /dev/video0 --set-parm=30
这里使用如下命令采集一帧画面报错到/data/01.yuv
v4l2-ctl --verbose -d /dev/video21 --set-fmt-video=width=640,height=480,pixelformat=YUYV --stream-mmap=4 --stream-skip=3 --stream-count=5 --stream-to=/data/01.yuv --stream-poll
将文件通过使用adb上传到PC端使用7YUV工具查看
摄像头MJPG格式画面采集
mjpg- 是 上一个开源的 uvc 视频应用,它可以获取摄像头的视频流,然后通过局域网传输,可以直接在-w3开发板上编译这个代码并运行:
git clone https://github.com/andyshrk/mjpg-streamer.gitcd mjpg-streamer/mjpg-streamer-experimental/apt install cmake libjpeg62-turbo-dev build-essentialmake
在编译过程中,遇到两个报错问题,防止后续遇上再找资料,这里也附上:
of
make[3]: 离开目录“/root/mjpg-/mjpg--/”
make[3]: 进入目录“/root/mjpg-/mjpg--/”
[ 34%]CXX///.dir/.cpp.o
/root/mjpg-/mjpg--///.cpp:86:5: :on ; C++11a spaceandmacro [--]
86 | " Help for input …: “”\n"
| ^
/root/mjpg-/mjpg--///.cpp: In‘void* (void*)’:
/root/mjpg-/mjpg--///.cpp:408:34: error: ‘ITY’ was notin this scope; did you mean ‘’?
RK3588  ArmSoM-W3开发板  之 USB摄像头图像预览

文章插图
408 | .(ITY);
| ^~~~~~~~~~~~~~~~~~~~~~~
|
make[3]: *** [///.dir/build.make:82:///.dir/.cpp.o] 错误 1