摄像头应用测试

作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习
擅长领域:驱动开发,嵌入式软件开发,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/video20rkcif-mipi-lvds (platform:rkcif):/dev/media0rkcif (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/video10rkisp_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_FMTType: 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-ctrlsImage Processing Controlspixel_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.rhkb.cn/news/332326.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【操作系统】发展与分类(手工操作、批处理、分时操作、实时操作)

2.操作系统发展与分类 思维导图 手工操作阶段&#xff08;此阶段无操作系统&#xff09; 需要人工干预 缺点&#xff1a; 1.用户独占全机&#xff0c;资源利用率低&#xff1b; 2.CPU等待手工操作&#xff0c;CPU利用不充分。 批处理阶段&#xff08;操作系统开始出现&#x…

【JavaScript】初识 Promise

出现原由 先看一个例子&#xff1a; 模拟发送表白信息&#xff0c;如果一个失败&#xff0c;那么再给其他人发送&#xff0c;这时就相当于在失败回调函数中套了一层回调&#xff1b;如果后续还有多个表白对象&#xff0c;那么将一层一层地嵌套下去&#xff0c;也就是回调地狱…

Generative Action Description Prompts for Skeleton-based Action Recognition

标题&#xff1a;基于骨架的动作识别的生成动作描述提示 源文链接&#xff1a;https://openaccess.thecvf.com/content/ICCV2023/papers/Xiang_Generative_Action_Description_Prompts_for_Skeleton-based_Action_Recognition_ICCV_2023_paper.pdfhttps://openaccess.thecvf.c…

正运动控制器:视觉纠偏和找孔

一、用户主界面CCD参数设置 通过主界面CCD参数设置&#xff0c;学习如何操作计算相机中心与电批中心的偏移量&#xff0c;以及相机标定的功能。 1、相机中心与电批中心的偏移量计算 1.1、在用户主界面点击CCD参数按钮&#xff0c;进入CCD设置界面。 主界面 CCD参数设置界面 1…

显存碎片化与CUDA OOM解决

目录 一.显存碎片化与CUDA OOM解决 1.查看显卡内存容量 2.显存碎片化 &#xff08;1&#xff09;如何理解显存中“已分配”和“未分配”的内存块? &#xff08;2&#xff09;碎片化形成的原因&#xff1f; &#xff08;3&#xff09;如何减轻显存碎片化&#xff1f; 3.实…

空间注意力机制

第一步是沿着通道维度进行最大池化和平均池化&#xff0c;比如下面3*3的特征图&#xff0c;有3个通道。 第二步新特征图进行拼接并经过卷积调整通道数 第三步经过Sigmoid函数后乘到输入上 代码&#xff1a; class SpatialAttention(layers.Layer):def __init__(self):super(S…

Hibernate

主流ORM框架Object Relation Mapping对象关系映射&#xff0c;将面向对象映射成面向关系。 如何使用 1、导入相关依赖 2、创建Hibernate配置文件 3、创建实体类 4、创建实体类-关系映射文件 5、调用Hibernate API完成操作 具体操作 1、创建 Maven工程&#xff0c;在pom.xml中导…

Milvus Cloud 非结构化数据平台

从技术面来看,向量数据库底座自然而然向外延伸的产品包含: 1)向量提取,从非结构化数据中提取向量,这是向量数据库上游的工作,十分重要; 2)模型选择,选择正确的模型,能够更精准、更高质量地提取向量; 3)映射管理,即管理数据的本体和数据的语义层之间的映射,在…

【Linux杂货铺】进程通信

目录 &#x1f308; 前言&#x1f308; &#x1f4c1; 通信概念 &#x1f4c1; 通信发展阶段 &#x1f4c1; 通信方式 &#x1f4c1; 管道&#xff08;匿名管道&#xff09; &#x1f4c2; 接口 ​编辑&#x1f4c2; 使用fork来共享通道 &#x1f4c2; 管道读写规则 &…

01.并发编程简介

1 什么是并发编程 所谓并发编程是指在一台处理器上“同时”处理多个任务。并发是在同一实体上的多个事件。多个事件在同一时间间隔发生。 2 为什么我们要学习并发编程&#xff1f; 最直白的原因就是因为面试需要&#xff0c;大厂的 Java 岗的并发编程能力属于标配。 而在非大厂…

【Python特征工程系列】一文教你使用PCA进行特征分析与降维(案例+源码)

这是我的第287篇原创文章。 一、引言 主成分分析&#xff08;Principal Component Analysis, PCA&#xff09;是一种常用的降维技术&#xff0c;它通过线性变换将原始特征转换为一组线性不相关的新特征&#xff0c;称为主成分&#xff0c;以便更好地表达数据的方差。 在特征重要…

【数据结构】二叉树的认识与实现

目录 二叉树的概念&#xff1a; 二叉树的应用与实现&#xff1a; 二叉树实现接口&#xff1a; 通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树 二叉树节点个数​编辑 二叉树叶子节点个数 二叉树第k层节点个数 二叉树查找值为x的节点​编辑 二叉树前序遍…

全网讲的最详细的Docker镜像分层存储原理

先说结论&#xff0c;容器镜像分层存储图示 欢迎关注 实验环境准备 当前实验docker版本24.0.7如下&#xff0c;当前docker版本使用overlay2机制存储镜像 Client: Docker Engine - CommunityVersion: 24.0.7API version: 1.43Go version: go1.20.10…

Redis第18讲——Redis和Redission实现延迟消息

即使不是做电商业务的同学&#xff0c;也一定知道订单超时关闭这种业务场景&#xff0c;这个场景大致就是用户下单后&#xff0c;如果在一定时间内未支付&#xff08;比如15分钟、半小时&#xff09;&#xff0c;那么系统就会把这笔订单给关闭掉。这个功能实现的方式有很多种&a…

《Ai学习笔记》-模型集成部署

后续大多数模型提升速度和精度&#xff1a; 提升速度&#xff1a; -知识蒸馏&#xff0c;以distillBert和tinyBert为代表 -神经网络优化技巧。prune来剪裁多余的网络节点&#xff0c;混合精度&#xff08;fp32和fp26混合来降低计算精度从从而实现速度的提升&#xff09; 提…

【Week-R1】RNN实现心脏病预测,基于tensorflow框架

文章目录 一、什么是RNN&#xff1f;二、准备环境和数据2.1 导入数据 三、构建模型四、训练和预测五、其他&#xff08;1&#xff09;sklearn模块导入报错&#xff1a;ModuleNotFoundError: No module named sklearn&#xff08;2&#xff09;优化器改为SGD&#xff0c;accurac…

SVM兵王问题

1.流程 前面六个就是棋子的位置&#xff0c;draw就是逼和&#xff0c;后面的数字six就代表&#xff0c;白棋最少用六步就能将死对方。然后呢&#xff0c;可以看一下最后一个有几种情况&#xff1a; 2.交叉测试 leave one out&#xff1a; 留一个样本作测试集&#xff0c;其余…

基于51单片机的超声波液位测量与控制系统

基于51单片机液位控制器 &#xff08;仿真&#xff0b;程序&#xff0b;原理图PCB&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.使用HC-SR04测量液位&#xff0c;LCD1602显示&#xff1b; 2.当水位高于设定上限的时候&#xff0c;对应声光报警报警&am…

【ai】pycharm安装langchain 相关module

pycharm module install 【Python学习 】一篇文章教你PyCharm如何快速安装module 【python】pycharm如何安装python的模块包版本 2024.1.2 RC2 找到当前的虚拟项目 找到解释器 我现在配置为专门为openai-start 准备的3.10 版本+ 号可以找到模块

leetcode-顺时针旋转矩阵-111

题目要求 思路 1.假设现在有一个矩阵 123 456 789 2.我们可以根据19这个对角线将数据进行交换&#xff0c;得到矩阵 147 258 369 3.然后将矩阵每一行的数据再翻转&#xff0c;得到矩阵 741 852 963 代码实现 class Solution { public:vector<vector<int> > rot…