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

2023-10-09 17:20

本文主要是介绍ArmSoM-W3开发板 (RK3588) 之 USB摄像头图像预览,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

硬件准备

RK3588开发板(armsom-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-devices来获取usb摄像头的节点:

root@linaro-alip:~# v4l2-ctl --list-devices
rk_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/video21 --list-formats-ext 命令可以查看你的摄像头支持的格式:

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dNLjyCGx-1690975182908)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230802164835405.png)]

从这个命令可以看到这款摄像头支持两种格式“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/video21 -l命令,将显示当前连接到/dev/video21设备的所有控制参数和其当前值。

设置视频格式和帧率:通过指定视频格式和帧率来配置摄像头,例如:

v4l2-ctl -d /dev/video0 --set-fmt-video=width=1280,height=720,pixelformat=YUYV
v4l2-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工具查看

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q4KF0v9W-1690975182909)(C:\Users\Administrator\AppData\Local\Temp\Image.png)]

摄像头MJPG格式画面采集

mjpg-streamer 是 github上一个开源的 uvc 视频应用,它可以获取摄像头的视频流,然后通过局域网传输,可以直接在armsom-w3开发板上编译这个代码并运行:

git clone https://github.com/andyshrk/mjpg-streamer.git
cd mjpg-streamer/mjpg-streamer-experimental/
apt install cmake libjpeg62-turbo-dev build-essential
make

在编译过程中,遇到两个报错问题,防止后续遇上再找资料,这里也附上:

Scanning dependencies of target input_opencv
make[3]: 离开目录“/root/mjpg-streamer/mjpg-streamer-experimental/_build”
make[3]: 进入目录“/root/mjpg-streamer/mjpg-streamer-experimental/_build”
[ 34%] Building CXX object plugins/input_opencv/CMakeFiles/input_opencv.dir/input_opencv.cpp.o
/root/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/input_opencv.cpp:86:5: warning: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]
86 | " Help for input plugin…: “INPUT_PLUGIN_NAME”\n"
| ^
/root/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/input_opencv.cpp: In function ‘void* worker_thread(void*)’:
/root/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/input_opencv.cpp:408:34: error: ‘CV_IMWRITE_JPEG_QUALITY’ was not declared in this scope; did you mean ‘IN_CMD_JPEG_QUALITY’?
408 | compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);
| ^~~~~~~~~~~~~~~~~~~~~~~
| IN_CMD_JPEG_QUALITY
make[3]: *** [plugins/input_opencv/CMakeFiles/input_opencv.dir/build.make:82:plugins/input_opencv/CMakeFiles/input_opencv.dir/input_opencv.cpp.o] 错误 1
make[3]: 离开目录“/root/mjpg-streamer/mjpg-streamer-experimental/_build”
make[2]: *** [CMakeFiles/Makefile2:468:plugins/input_opencv/CMakeFiles/input_opencv.dir/all] 错误 2
make[2]: 离开目录“/root/mjpg-streamer/mjpg-streamer-experimental/_build”
make[1]: *** [Makefile:149:all] 错误 2
make[1]: 离开目录“/root/mjpg-streamer/mjpg-streamer-experimental/_build”
make: *** [Makefile:19:all] 错误 2
root@linaro-alip:~/mjpg-streamer/mjpg-streamer-experimental#

  • 1.关于无效后缀的警告: 找到 “/root/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/input_opencv.cpp” 文件的第86行,并确保在" Help for input plugin..: "INPUT_PLUGIN_NAME"\n"中的字符串宏INPUT_PLUGIN_NAME之前有一个空格。

  • 2.关于 ‘CV_IMWRITE_JPEG_QUALITY’ 未声明的错误: 找到 “/root/mjpg-streamer/mjpg-streamer-experimental/plugins/input_opencv/input_opencv.cpp” 文件的第408行,并将 ‘CV_IMWRITE_JPEG_QUALITY’ 替换为 ‘IN_CMD_JPEG_QUALITY’。

编译成功之后执行如下命令验证

./mjpg_streamer -i "./input_uvc.so -n -f 30 -r 640x480 -d /dev/video21" -o "./output_http.so -w ./www" &

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f4mkYuwI-1690975182909)(C:\Users\Administrator\AppData\Local\Temp\Image.png)]
查看开发板的ip地址
在这里插入图片描述

在局域网内,任何电脑的网页端打开如下网址:http://192.168.100.103:8080/?action=stream 你就能实时看到摄像头采集到的视频流。

RK3588开发板 (armsom-w3) 之 USB摄像头

ArmSoM 产品介绍: http://wiki.armsom.org/index.php/ArmSoM-w3

ArmSoM 技术论坛: http://forum.armsom.org/

这篇关于ArmSoM-W3开发板 (RK3588) 之 USB摄像头图像预览的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/174369

相关文章

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

开发板NFS挂载文件目录

文章目录 序NFS1. 安装 NFS 服务器和客户端在服务器上(NFS 服务器端)在客户端上(NFS 客户端) 2. 配置 NFS 服务器创建共享目录编辑 `/etc/exports` 文件启动 NFS 服务 3. 在客户端挂载 NFS 共享创建挂载点挂载 NFS 共享验证挂载 4. 设置开机自动挂载5. 解决权限问题 序 本节主要实现虚拟机(服务器)与开发板(客户端)通过N

【python计算机视觉编程——7.图像搜索】

python计算机视觉编程——7.图像搜索 7.图像搜索7.1 基于内容的图像检索(CBIR)从文本挖掘中获取灵感——矢量空间模型(BOW表示模型)7.2 视觉单词**思想****特征提取**: 创建词汇7.3 图像索引7.3.1 建立数据库7.3.2 添加图像 7.4 在数据库中搜索图像7.4.1 利用索引获取获选图像7.4.2 用一幅图像进行查询7.4.3 确定对比基准并绘制结果 7.

【python计算机视觉编程——8.图像内容分类】

python计算机视觉编程——8.图像内容分类 8.图像内容分类8.1 K邻近分类法(KNN)8.1.1 一个简单的二维示例8.1.2 用稠密SIFT作为图像特征8.1.3 图像分类:手势识别 8.2贝叶斯分类器用PCA降维 8.3 支持向量机8.3.2 再论手势识别 8.4 光学字符识别8.4.2 选取特征8.4.3 多类支持向量机8.4.4 提取单元格并识别字符8.4.5 图像校正

Usb Audio Device Descriptor(10) Hid Device

对于 Standard Interface Descriptor, 当 bInterfaceClass=0x03时,即为HID设备。Standard Interface Descriptor如下 struct usb_standard_interface_descriptor{U8 bLength; /*Size of this descriptor in bytes*/U8 bDescrip

4-4.Andorid Camera 之简化编码模板(获取摄像头 ID、选择最优预览尺寸)

一、Camera 简化思路 在 Camera 的开发中,其实我们通常只关注打开相机、图像预览和关闭相机,其他的步骤我们不应该花费太多的精力 为此,应该提供一个工具类,它有处理相机的一些基本工具方法,包括获取摄像头 ID、选择最优预览尺寸以及打印相机参数信息 二、Camera 工具类 CameraIdResult.java public class CameraIdResult {

HalconDotNet中的图像特征与提取详解

文章目录 简介一、边缘特征提取二、角点特征提取三、区域特征提取四、纹理特征提取五、形状特征提取 简介   图像特征提取是图像处理中的一个重要步骤,用于从图像中提取有意义的特征,以便进行进一步的分析和处理。HalconDotNet提供了多种图像特征提取方法,每种方法都有其特定的应用场景和优缺点。 一、边缘特征提取   边缘特征提取是图像处理中最基本的特征提取方法之一,通过检

用了虚拟机后,本机摄像头打不开了(联想电脑thinkpad)

虚拟机有摄像头,我断开了连接,现在本机的摄像头打开就是一个锁 我先把虚拟机的摄像头关了 然后把本机的vm usb关闭了 Win+R),输入services.msc,找到VMware USB Arbitration Service,确保其状态为“关闭 然后打开桌面助手 开启 参考: 联想知识库