摄像头应用测试

news2025/1/16 17:04:48

作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习
擅长领域:驱动开发,嵌入式软件开发,BSP开发
作者主页:一个平凡而乐于分享的小比特的个人主页
文章收录专栏:RV1106_LINUX,本专栏为本栏为RV1106_LINUX开发,学习记录
欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

Luckfox Pico Max适配的是 SC3336 3MP Camera (A) 摄像头,这款摄像头采用思特威SC3336感光芯片,支持3百万像素。具备高灵敏度,高信噪比低照度的性能,能够呈现更加细腻、色彩更加逼真的夜视全彩成像,更好地适应环境光线变化。当前推流仅适用于 buildroot系统。

1. 查看摄像头

1.首先连接摄像头,请确保连接正常后开机。系统将自动识别摄像头,注意接线不要接反了。

LuckFox PicoMax 开发板连接摄像头时,请确保摄像头排线的金属面朝向开发板芯片。

在这里插入图片描述

2.查看摄像头,若成功识别摄像头会生成 rkipc.ini 文件。

在这里插入图片描述

3.获取设备的 IP 地址
在这里插入图片描述
Luckfox Pico Max 默认 IP 为 172.32.0.93,网口ip为10.230.149.130

2. 配置RNDIS虚拟网口

1.Windows 安全中心—>防火墙和网络保护—>关闭防火墙。

2.配置 RNDIS 网卡的静态IP,打开设置—>高级网络设置—>更改适配器选项。

3.网卡一般是类似这样的名字Remote NDIS based nternet Sharing Device,右键属性。

在这里插入图片描述

4.双击 internet 协议版本(TCP/IPv4),IPV4地址设置为 172.32.0.100,避免和设备冲突。

在这里插入图片描述
在这里插入图片描述

3. 使用VLC media player 推流

  1. 下载并安装 VLC media player 。

  2. 打开 VLC media player 软件,在媒体—>打开网络串流

    在这里插入图片描述

  3. 输入默认的 IP 地址:rtsp://172.32.0.93/live/0

  4. 也可以使用 eth0 的 IP地址串流: rtsp://10.230.149.130/live/0

  5. 点击播放,即可看到摄像头画面,可以旋转镜头来调焦

摄像头测试

4. V4L2-utils 工具包安装

V4L2-utils 是一组用于测试和配置 V4L2 设备的实用工具,它们通过命令行界面提供了对 V4L2 接口的访问。Luckfox SDK 的buildroot包中已经包含了 v4l2-utils软件包中的工具,但需要手动开启它,进入到/luckfox-pico/sysdrv/source/buildroot/buildroot-2023.02.6下输入make menuconfig,进入buildroot图形化界面菜单选项(注意:必须先将下载好的源码编译一次才会有/buildroot-2023.02.6

在 buildroot 目录添加 V4L2,使用关键字"libv4l2"进行搜索。
在这里插入图片描述

根据路径使能V4L2-utils 工具包

在这里插入图片描述

注意libv4l和v4l-utils tools都要选上选上后,一定要保存再退出,继续输入

make ARCH=arm savedefconfig
cp .config ./configs/luckfox_pico_defconfig

然后重新编译,编译完成后会在/luckfox-pico/output下生成编译产物

output/
├── image
│   ├── download.bin ---------------- 烧录工具升级通讯的设备端程序,只会下载到板子内存
│   ├── env.img --------------------- 包含分区表和启动参数
│   ├── uboot.img ------------------- uboot镜像
│   ├── idblock.img ----------------- loader镜像
│   ├── boot.img -------------------- kernel镜像
│   ├── rootfs.img ------------------ kernel镜像
│   └── userdata.img ---------------- userdata镜像
└── out
    ├── app_out --------------------- 参考应用编译后的文件
    ├── media_out ------------------- media相关编译后的文件
    ├── rootfs_xxx ------------------ 文件系统打包目录
    ├── S20linkmount ---------------- 分区挂载脚本
    ├── sysdrv_out ------------------ sysdrv编译后的文件
    └── userdata -------------------- userdata

将系统镜像烧录到开发板

5. v4l2-ctl使用

1.列出摄像头的设备

# v4l2-ctl --list-devices
rkisp-statistics (platform: rkisp):
        /dev/video19
        /dev/video20

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

rkcif (platform:rkcif-mipi-lvds):
        /dev/video0
        /dev/video1
        /dev/video2
        /dev/video3
        /dev/video4
        /dev/video5
        /dev/video6
        /dev/video7
        /dev/video8
        /dev/video9
        /dev/video10

rkisp_mainpath (platform:rkisp-vir0):
        /dev/video11
        /dev/video12
        /dev/video13
        /dev/video14
        /dev/video15
        /dev/video16
        /dev/video17
        /dev/video18
        /dev/media1

  • rkisp_mainpath:CSI摄像头

2.列出摄像头支持的格式

# v4l2-ctl --device=/dev/video11 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
        Type: Video Capture Multiplanar

        [0]: 'UYVY' (UYVY 4:2:2)
                Size: Stepwise 32x16 - 2304x1296 with step 8/8
        [1]: 'NV16' (Y/CbCr 4:2:2)
                Size: Stepwise 32x16 - 2304x1296 with step 8/8
        [2]: 'NV61' (Y/CrCb 4:2:2)
                Size: Stepwise 32x16 - 2304x1296 with step 8/8
        [3]: 'NV21' (Y/CrCb 4:2:0)
                Size: Stepwise 32x16 - 2304x1296 with step 8/8
        [4]: 'NV12' (Y/CbCr 4:2:0)
                Size: Stepwise 32x16 - 2304x1296 with step 8/8
        [5]: 'NM21' (Y/CrCb 4:2:0 (N-C))
                Size: Stepwise 32x16 - 2304x1296 with step 8/8
        [6]: 'NM12' (Y/CbCr 4:2:0 (N-C))
                Size: Stepwise 32x16 - 2304x1296 with step 8/8

3.显示摄像头参数

# v4l2-ctl --device=/dev/video11 --list-ctrls

Image Processing Controls

                     pixel_rate 0x009f0902 (int64)  : min=0 max=1000000000 step=1 default=1000000000 value=101250000 flags=read-only, volatile

4.录制视频

#CSI 摄像头(需要先关掉自带的RKIPC)
killall rkipc
v4l2-ctl --device=/dev/video11 --set-fmt-video=width=640,height=480,pixelformat=NV12 --stream-mmap --stream-to=video50.yuv --stream-count=60
  • -device:摄像头对应设备文件
  • --set-fmt-video:指定了宽高及 pxielformat (标识像素格式)
  • --stream-mmap:指定 buffer的类型为 mmap,即由内核分配的物理连续的或经过 iommu 映射的buffer
  • --stream-to:指定帧数据保存的文件路径
  • --stream-count:指定抓取的帧数,不包括–stream-skip丢弃的数量

5.如果出现“The pixelformat ‘UYVY’ is invalid” 字样说明摄像头不支持此格式,使用第二步的方法查看摄像头支持的格式

6.看到<<<<<<<<<<<<<<<<<<<<<<<<<< 25.00 fps 说明成功录制视频,可以成功生成video50.yuv视频文件

# killall rkipc
# v4l2-ctl --device=/dev/video11 --set-fmt-video=width=640,height=480,pixelforma
t=NV12 --stream-mmap --stream-to=video50.yuv --stream-count=60
<<<<<<<<<<<<<<<<<<<<<<<<<< 25.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<< 25.00 fps
<<<<<<<<
# ls
bin            lib32          oem            run            usr
data           lib64          opt            sbin           var
dev            linuxrc        proc           sys            video50.yuv
etc            media          rockchip_test  tmp
lib            mnt            root           userdata

6. 显示视频

上面抓取的图片或者视频可以拷贝到 Ubuntu 中借助借助工具ffplay查看。ffplay 是 FFmpeg 工具包中的一个命令行工具,用于播放音频和视频文件。它基于 FFmpeg 库,支持广泛的音视频格式,能够在命令行中实时播放或预览多媒体内容。

首先我们要让虚拟机和开发板在同一网段下

在这里插入图片描述

可以看到笔者的虚拟机ip地址为192.168.10.100,因此我们开发板IP地址

在这里插入图片描述

进入root目录,创建一个文件夹与虚拟机的目录进行nfs挂载,将生成的video50.yuv文件拷贝到虚拟机的挂载目录中

在这里插入图片描述

1.播放视频

ffplay -video_size 640x480 -pixel_format nv12 -framerate 10 -i video50.yuv
  • -video_size size 设置帧尺寸 设置帧尺寸大小
  • -pixel_format format 设置像素格式
  • -framerate 10: 设置视频的帧率为 10 帧/秒

在这里插入图片描述

2.转换视频格式

ffmpeg -f rawvideo -pixel_format yuyv422 -video_size 640x480 -framerate 30 -i video.yuv -c:v libx264 output.mp4

在这里插入图片描述

生成MP4格式,使用mpv命令进行播放

mpv output.mp4

摄像头MP4视频测试

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

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

相关文章

单向无头链表实现

目录 1. 为什么要有链表&#xff1f; 2. 链表的种类 3. 具体功能实现 &#xff08;1&#xff09;节点结构体定义 &#xff08;2&#xff09;申请节点 &#xff08;3&#xff09;尾插 &#xff08;4&#xff09;尾删 &#xff08;5&#xff09;头插 &#xff08;6&#…

CST电磁软件工作室时域求解器和频域求解器介绍【仿真入门】

时域求解器vs.频域求解器 不同情形下选择Time Domain Solver还是Frequency Domain Solver? 三维电磁仿真支持的具有代表性的两种求解器-Time Domain Solver和Frequency DomainSolver以不同的方式计算出仿真结果&#xff0c;所以根据仿真的情形可以选择性地使用两个Solver。 …

BCD编码Java实现

最常用的BCD编码&#xff0c;就是使用"0"至"9"这十个数值的二进码来表示。这种编码方式&#xff0c;在称之为“8421码”&#xff08;日常所说的BCD码大都是指8421BCD码形式&#xff09;。除此以外&#xff0c;对应不同需求&#xff0c;各人亦开发了不同的编…

图论-最短路算法

1. Floyd算法 作用&#xff1a;用于求解多源最短路&#xff0c;可以求解出任意两点的最短路 利用动态规划只需三重循环即可&#xff08;动态规划可以把问题求解分为多个阶段&#xff09;定义dp[k][i][j]表示点i到点j的路径&#xff08;除去起点终点&#xff09;中最大编号不超…

React类组件生命周期详解

在React的类组件中&#xff0c;从组件创建到组件被挂载到页面中&#xff0c;这个过程react存在一系列的生命周期函数&#xff0c;最主要的生命周期函数是componentDidMount、componentDidUpdate、componentWillUnmount 生命周期图例如下 1. componentDidMount组件挂载 如果你…

【NLP】词性标注

词 词是自然语言处理的基本单位&#xff0c;自动词法分析就是利用计算机对词的形态进行分析&#xff0c;判断词的结构和类别。 词性&#xff08;Part of Speech&#xff09;是词汇最重要的特性&#xff0c;链接词汇和句法 词的分类 屈折语&#xff1a;形态分析 分析语&#…

来盘点我的校园生活(3)

来公布上期数学题答案:12 你算对了吗&#xff1f; 今天我们班真是炸开了锅。事情是这样的&#xff0c;我今天早晨上学&#xff0c;学校不让早到&#xff0c;但我一个不小心早到了&#xff0c;主任的规定是尽量不早到&#xff0c;早到不扣分&#xff0c;倒要站在那儿背书&…

MYSQL 集群

1.集群目的:负载均衡 解决高并发 高可用HA 服务可用性 远程灾备 数据有效性 类型:M M-S M-S-S M-M M-M-S-S 原理:在主库把数据更改(DDL DML DCL&#xff09;记录到二进制日志中。 备库I/O线程将主库上的日志复制到自己的中继日志中。 备库SQL线程读取中继日志…

css使用clip-path裁剪出不规则图形并绑定点击事件

点击图片的红色区域触发事件 点击图片黑色不触发点击事件&#xff0c;代码演示效果如下&#xff1a; 代码演示效果 1.png&#xff08;尺寸 200*470&#xff09; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><…

Spring Boot:SpringBoot 如何优雅地定制JSON响应数据返回

一、前言 目前微服务项目中RESTful API已经是前后端对接数据格式的标配模式了&#xff0c;RESTful API是一种基于REST&#xff08;Representational State Transfer&#xff0c;表述性状态转移&#xff09;原则的应用程序编程接口&#xff08;Application Programming Interfac…

ubuntu手动替换源后,更新源时提示“仓库.... jammy Release“ 没有Release文件

问题如图所示&#xff0c;由于问题不好定位&#xff0c;我就从替换源&#xff0c;以及解决错误提示这两个步骤&#xff0c;来解决其中可能存在的问题。 1、替换源 这一步骤&#xff0c;网上的资料可以搜到很多&#xff0c;我跟着做了之后&#xff0c;总会冒出来各种各样的小问…

TikTok矩阵管理系统:品牌增长的新引擎

随着社交媒体的快速发展&#xff0c;TikTok已成为全球最受欢迎的短视频平台之一。品牌和企业纷纷涌入这个平台&#xff0c;寻求新的增长机会。然而&#xff0c;随着内容的激增和用户群体的多样化&#xff0c;管理TikTok账号变得越来越复杂。这时&#xff0c;TikTok矩阵管理系统…

Vue2全局封装modal弹框

Vue2全局封装modal弹框使用&#xff1a; 一.components下封装 1.index.js import ModalCheck from ./modal-check.vue export default ModalCheck2.modal-check.vue <template><div><Modalv-model"selSingleShow":title"editTitle(convertCa…

Docker Hub注册及上传自定义镜像

说明&#xff1a;本文介绍如何注册Docker Hub&#xff0c;及将自己自定义镜像上传到Docker Hub上&#xff1b; 注册Docker Hub 浏览器输入&#xff1a;http://hub.docker.com/&#xff0c;进入Docker Hub官网 注&#xff1a;如果无法访问&#xff0c;可在GitHub上下载一个Ste…

PPT大珩助手新功能-生成迷宫

大珩助手是一款功能丰富的办公软件插件&#xff0c;它主要分为两个版本&#xff1a;PPT大珩助手和Word大珩助手。这两个版本都旨在提高用户在处理演示文稿和文档时的效率。 PPT大珩助手 这是一款专门为Microsoft PowerPoint设计的插件。它提供了多种功能&#xff0c;例如素材…

Outlook 开启smtp配置

微软 Outlook 邮箱各种服务详细信息 服务类型服务器地址端口加密方法POPoutlook.office365.com995TLSIMAPoutlook.office365.com993TLSSMTPsmtp.office365.com587STARTTLS 然而仅仅有以上信息还不够&#xff0c;需要获取服务密码 (授权码) 才能够使用 POP, IMAP, SMTP 这三种…

面了一个程序员,因为6休1拒绝了我

人一辈子赖以生存下去的主要就考虑三件事&#xff0c;职业&#xff0c;事业&#xff0c;副业&#xff0c;有其1-2都是很不错的。如果还没到40岁&#xff0c;那不妨提前想下自己可能遇到的一些情况&#xff0c;提前做一些准备&#xff0c;未雨绸缪些。 今年整体就业大环境也一般…

SpringIOC和DI注解开发

xml配置 注解方式 6个注解&#xff1a; IOC用于对象创建&#xff1a; Controller 控制层 Service 业务层 Repository 持久层 Conponent 普通组件对象的创建 DI用于依赖注入&#xff1a; Autowired //默认按照类型 配合Qualifier使用 Qualifier //指定…

java文档管理系统的设计与实现源码(springboot+vue+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的文档管理系统的设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 文档管理系统的…

十年了。网络连接又中断了,原来是因为...

爷青回&#xff01; 90 后的朋友应该都是玩过或听说过 DNF 这个游戏&#xff0c;反正这个有是伴随着我的整个童年时光&#xff0c;当年放学就跑去上网&#xff0c;就为了刷疲劳、爆装备&#xff0c;”挥霍“了大把时光。最近他出手游了。 很早就看到过广告&#xff0c;感觉就…