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

news2024/11/19 4:18:31

硬件准备

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/video20


rkisp-statistics (platform: rkisp):
    /dev/video18
    /dev/video19


rkcif-mipi-lvds2 (platform:rkcif):
    /dev/media0


rkisp_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 //获取当前timings

v4l2-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摄像头

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/827949.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

晚读“散文”一篇之随感

近来天气太热,上网写作的激情锐减,午后“昏睡百年”至近5点半才睡眼惺忪地起床。因深陷上网日日写作长达14年之久,也便如同“吸粉成瘾”的“瘾君子”戒不了毒瘾一样管束不了自己的“鼠标手”,就打开了电脑。 恍惚间步入了网络上的…

Dockerfile构建apache镜像(源码)

Dockerfile构建apache镜像&#xff08;源码&#xff09; 1、建立工作目录 [rootdocker ~]# mkdir apache [rootdocker ~]# cd apache/ 2、编写Dockerfile文件 [rootdocker apache]# vim Dockerfile #基于的基础镜像 FROM centos:7#镜像作者信息 MAINTAINER Huyang <133…

Java通过freemark创建word文档

创建freemarker模板 创建Freemarker模板&#xff1a;在您的Java项目中&#xff0c;创建一个Freemarker模板文件&#xff08;例如template.ftl&#xff09;&#xff0c;其中包含您想要生成的Word文档的内容。您可以在模板中使用Freemarker的标记来插入动态内容。 <!DOCTYPE…

Spring如何通过三级缓存解决循环依赖问题?

目录 一、什么是Spring 二、循环依赖问题 三、三级缓存机制 四、如何通过三级缓存解决循环依赖问题 一、什么是Spring Spring框架是一个开源的Java应用程序开发框架&#xff0c;提供了一种全面的、一致的编程模型&#xff0c;用于构建企业级应用程序和服务。它由Rod Johnso…

如何压缩高清PDF文件大小?将PDF文件压缩到最小的三个方法

PDF格式是一种非常常用的文档格式&#xff0c;但是有时候我们需要将PDF文件压缩为更小的大小以便于传输和存储。在本文中&#xff0c;我们将介绍三种PDF压缩的方法&#xff0c;包括在线PDF压缩、利用软件PDF压缩以及使用WPS缩小pdf。 首先&#xff0c;在线PDF压缩是最常用的方…

人体大脑神经元运行模拟器!让你直观体验大脑的运行方式

首先&#xff0c;宣布沾花把玖正式回归&#xff01;&#xff01;&#xff01; 最近沾花在网上看到一个神奇的网站&#xff1a;A Neural Network Playground 经过沾花的亲手测试&#xff0c;发现这玩意儿能模拟人体大脑神经元的运行&#xff01; 下面是网址&#xff1a; A N…

干货!机器视觉基础知识汇总

现如今,中国已经成为世界机器视觉发展最为活跃地区,应用范围涵盖了工业、农业、医药、军事、航天、气象等国民经济各个行业。虽然机器视觉的成长速度非常快,但是还是有很多人对机器视觉并不了解,今天我们来了解下机器视觉。 机器视觉就是用机器代替人眼来做测量和判断。机器…

一条自由游动的鲸鱼

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>鲸鱼</title><style>#canvas-container {width: 100%;height: 100vh;overflow: hidden;}&l…

Linux(二)---------网络命令学习(ifconfig命令)

1.ifconfig命令 用于配置网卡ip地址信息&#xff0c;等网络参数信息&#xff0c;或者查看显示网络接口信息&#xff0c;类似于windows的ipconfig命令&#xff0c;还能够临时性的配置ip地址&#xff0c;子网掩码&#xff0c;广播地址&#xff0c;网关信息等。 注意ifconfig命令…

配置GIt账号、配置公钥

1.设置账号和邮箱 打开终端输入以下命令&#xff1a; git config --global --unset-all user.name git config --global --unset-all user.email然后输入以下命令来设置新的账号和邮箱&#xff1a; git config --global user.name "your_username" git config --glo…

整理了250个shell脚本,拿来即用!

无论是系统运维&#xff0c;还是应用运维&#xff0c;均可分为“纯手工”→ “脚本化”→ “自动化”→“智能化”几个阶段&#xff0c;其中自动化阶段&#xff0c;主要是将一些重复性人工操作和运维经验封装为程序或脚本&#xff0c;一方面避免重复性操作及风险&#xff0c;另…

【音视频SDK测评】线上K歌软件开发技术选型

摘要 在线K歌软件的开发有许多技术难点&#xff0c;需考虑到音频录制和处理、实时音频传输和同步、音频压缩和解压缩、设备兼容性问题等技术难点外&#xff0c;此外&#xff0c;开发者还应关注音乐版权问题&#xff0c;确保开发的应用合规合法。 前言 前面写了几期关于直播 …

qt系列-qt6在线安装慢的问题

.\qt-unified-windows-x64-online.exe --mirror https://mirrors.aliyun.com/qt/下载速度飞快

剑指offer19.正则表达式

这道题我一看就有印象&#xff0c;我室友算法课设抽到这题&#xff0c;他当时有个bug让我帮他看一下&#xff0c;然后我就大概看了一下他的算法&#xff0c;他是用动态规划写的&#xff0c;用了一个二维数组&#xff0c;然后我就试着按照这个思路去写&#xff0c;想了一会还是没…

输入筛选框搜索

文章目录 输入筛选框实现效果图需求前端工具版本添加依赖main.js导入依赖 代码 后端代码对应 sql对应 mapper.xml 文件的动态 sql 输入筛选框实现 效果图 需求 通过筛选框&#xff0c;选择公司&#xff0c;传入后端&#xff0c;后端根据公司名称去文章的内容中进行模糊查询 …

flask响应

介绍 在flask中&#xff0c;响应的方式有很多种&#xff0c;可以是普通字符串、json数据、html文本、模板或者是重定向。视图函数的返回值会自动转换为一个响应对象 当响应对象是字符串时 根据这个字符串和缺省参数自动生成一个用于返回的 响应对象 app.route("/test&q…

使用Debate Dynamics在知识图谱上进行推理(2020)7.31+8.1+8.2

使用Debate Dynamics在知识图谱上进行推理 摘要介绍背景与相关工作我们的方法状态action环境policiesDebate Dynamics裁判奖励报酬最大化和培训计划 实验数据集度量和评估方案结果 总结 摘要 我们提出了一种新的基于 Debate Dynamics 的知识图谱自动推理方法。 其主要思想是将…

2023年DevOps和云趋势报告!

要点 ●云创新已从革命性阶段转变为演进性阶段&#xff0c;重点是迁移和重新架构工作负载。云空间已发展为提供对可扩展资源和托管服务的按需访问&#xff0c;强调简化交互并减少团队的认知负担。 ●人工智能 (AI) 和大型语言模型 (LLM) 可以通过解决认知过载问题并支持即时管…

疯狂收割offer,全网最全接口测试面试题+答案,面试必刷题...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 面试题&#xff1…

网络安全公司校招面试会面试那些问题?

面试官会从那些方面去考察面试者&#xff1f; 以某安全公司的技术支持工程师岗位为例 面试官可能会从网络技术、操作系统、数据库、项目经验、语言表达以及个人擅长技能方面展开 面试官会提出那些问题来考查面试者呢&#xff1f; 网络基础方面的问题&#xff1a;请介绍一下…