0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ArmSom--摄像头开发指南(二)

ARMSOM ? 2023-11-06 10:30 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一. 简介

RK3588从入门到精通

开发板:ArmSoM-W3

Kernel:5.10.160

OS:Debian11

上篇文档介绍了rockchip平台怎么配置MIPI-CSI的通路,本?主要介绍在Rockchip平台下Camera相关测试命令

二. 摄像头连接

ArmSoM-W3开发板与imx415连接图如下:

wKgZomVITeKABfqrAAgn30_F2bg515.pngw3-camera-hardware

注意

排线的金属引脚朝向板子

三. 使用摄像头

连接摄像头模块并上电后,可查看开机日志。

wKgZomVIXVCALdplAACZ1x4sHoI462.png

如果没有报错,那表明模块在正常运行,在Linux系统中,你可以使用多种方法来访问和利用该摄像头设备。

3.1 使用命令行工具

media-ctl 和 v4l2-ctl 是在Linux环境下用于配置和管理视频和多媒体设备的命令行工具。它们通常与V4L2(Video for Linux 2)子系统一起使用,用于管理摄像头、视频采集卡、显示设备和其他多媒体硬件的设置和参数。

media-ctl工具的操作是通过/dev/medio0等media 设备,它管理的是Media的拓扑结构中各个节点的 format、大小、 链接。 v4l2-ctl工具则是针对/dev/video0,/dev/video1等 video设备,它在video设备上进行set_fmt、 reqbuf、qbuf、dqbuf、stream_on、stream_off 等一系列操作。

n为4的倍数(0,1,2,3…) /dev/videon+0:视频输出 SP主通道 /dev/videon+1:视频输出 MP自身通道 /dev/videon+2:3A统计 /dev/videon+3:3A参数设置

3.1.1 显示拓扑结构

使用以下命令可以显示拓扑结构:

media-ctl -p -d /dev/media0

主要关注的是有没有找到Sensor的Entity。如果没有找到Sensor的Entity,说明Sensor注册有问题。

开发板上接上摄像头后可以看到如下的输出:

wKgaomVIXW2AEXb5AACISAOFQg0281.png

3.2.2 查看摄像头信息

使用命令列出所有摄像头设备:

wKgaomVIXX2AaRE0AACFOxrdQRk945.png

其中/dev/video11就是这个摄像头的设备。

查看设备的预览支持格式:

wKgZomVIXYmAQ8jOAACN_AFZZ-Y911.png

查看设备的所有信息:

wKgZomVIXZ6ANiM6AAC8vtHZed0051.png

3.2.3 显示图像

使用v4l2-ctl抓一帧图片:

wKgaomVIXayAfNqkAACfbZ14DMY217.png

参数说明:

-d: 摄像头对应设备文件 --set-fmt-video:指定了宽高及pxielformat(用FourCC表示)。NV12即用FourCC表示的pixelformat --stream-mmap:指定buffer的类型为mmap,即由kernel分配的物理连续的或经过iommu映射的buffer --stream-to:指定帧数据保存的文件路径 --stream-skip:指定丢弃(不保存到文件)前3帧 --stream-count:指定抓取的帧数,不包括--stream-skip丢弃的数量

抓取的图片使用adb工具拷贝到Windows下用7YUV工具打开,也可以用ffplay命令打开

ffplay是FFmpeg提供的一个极为简单的音视频媒体播放器(由ffmpeg库和SDL库开发),可以用于音视频播放、可视化分析 ,提供音视频显示和播放相关的图像信息、音频的波形等信息,也可以用作FFmpeg API的测试工具使用。

使用 ffplay 非常简单,只需在终端中运行以下命令来播放媒体文件:

ffplay /data/4k_nv12.yuv -f rawvideo -pixel_format nv12 -video_size 3840x2160

3.2.3 显示视频

使用v4l2可以录制视频:

wKgZomVIXciAQu_qAAAvRBV1X0E271.png

使用ffplay播放:

ffplay -f rawvideo -video_size 3840x2160 -pixel_format nv12 out.yuv

3.3 使用多媒体框架应用程序

GStreamer:GStreamer是一种多媒体框架,你可以使用它来构建自定义的多媒体应用程序,捕获摄像头视频,进行处理和展示。

你可以使用以下GStreamer管道捕获视频:

gst-launch-1.0 v4l2src device=/dev/video11 ! video/x-raw,format=NV12,width=3840,height=2160,framerate=30/1 ! videoconvert ! autovideosink

1. v4l2src:从 /dev/video11 捕获视频数据。

2. video/x-raw:指定输出数据格式为原始视频,format 参数设置为 NV12,width 设置为 3840,height 设置为 2160,framerate 设置为 30fps。

3. videoconvert:执行格式转换,确保输出数据适用于后续的元素。

4. autovideosink:自动选择适当的视频输出插件,将视频显示在屏幕上。

显示如下:

wKgZomVITueAedvsABvs2e5x2TI333.pngcamera-screenshot

注意:显示器的分辨率是1920x1080,摄像头的分辨率是3840x2160,导致如左上角画面显示不全,双击边框可以得到分辨率是1920x1080的画面。

下面有一个简单的Python示例,用于创建一个GStreamer管道并启动捕获视频可供参考:

wKgZomVIXdyAXxG5AADG-aKWH6w066.png

3.4.自定义应用程序开发

特定的定制功能,一般是使用编程语言(如C++或Python)开发自己的摄像头应用程序

总的来说,应用程序通过API接口采集视频数据大致分为五个步骤:

首先,打开视频设备文件,进行视频采集的参数初始化,设置视频图像的采集窗口、采集的点阵大小和格式;

其次,申请若干视频采集的帧缓冲区,并将这些帧缓冲区从内核空间映射到用户空间,便于应用程序读取/处理视频数据;

第三,将申请到的帧缓冲区在视频采集输入队列排队,并启动视频采集;

第四,驱动开始视频数据的采集,应用程序从视频采集输出队列取出帧缓冲区,处理完后,将帧缓冲区重新放入视频采集输入队列,循环往复采集连续的视频数据;

第五,停止视频采集。

四. 结语

根据需求,选择最适合的方法来访问和使用摄像头设备,每个具体型号的摄像头可能有其独特的设置和要求,各个系统下的使用摄像头的方法也有很多,如果你有疑问或者需要帮助,可以在ArmSom论坛提出问题,与其他开发者分享经验和获取支持。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 摄像头
    +关注

    关注

    61

    文章

    4999

    浏览量

    99132
  • 开发板
    +关注

    关注

    25

    文章

    5769

    浏览量

    106430
  • RK3588
    +关注

    关注

    7

    文章

    432

    浏览量

    6091
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    创世SD NAND贴片卡:智能摄像头存储难题的完美解决方案 #人工智能 #智能摄像头 #摄像头

    摄像头
    深圳市雷龙发展有限公司
    发布于 :2025年08月05日 11:17:13

    【EASY EAI Orin Nano开发板试用体验】--USB摄像头使用

    本篇讲述USB摄像头接入开发板使用。准备200W像素/30FPS摄像头,接入开发板上层USB口(建议),如下 一.USB摄像头接入管理 1.
    发表于 07-13 18:21

    【Milk-V Duo S 开发板免费体验】4 - OV5647 摄像头摄像头测试

    DuoS开发板的/mnt/system/usr/bin/目录下提供了几个测试程序,其中sample_sensor_test就是用于摄像头测试的。 要运行这个程序,需要先修改/mnt/data/下
    发表于 07-08 21:26

    基于RK3576开发板的网络摄像头方案

    本地RTSP拉流的操作指南,并详细说明了代码组成、调用关系及开发指南,包括CMakeLists.txt文件解析和build.sh编译脚本的使用。整体方案旨在帮助用户快速上手并实现四路MIPI-CSI摄像头的流媒体输出。
    的头像 发表于 05-12 17:54 ?403次阅读
    基于RK3576<b class='flag-5'>开发</b>板的网络<b class='flag-5'>摄像头</b>方案

    DVP摄像头拍照上传功能开发教程:基于开源代码的实践指南!

    引擎Air8101,有丰富的视频、音频、图形化显示等多媒体应用能力,支持LuatOS二次开发。 ? LuatOS固件支持DVP摄像头拍照功能(当前支持100万像素静态拍照,200万像素待调试),可控制拍照以及获取照片数据,并且支持存储到TF存中或显示在Air8101
    的头像 发表于 04-17 13:14 ?310次阅读
    DVP<b class='flag-5'>摄像头</b>拍照上传功能<b class='flag-5'>开发</b>教程:基于开源代码的实践<b class='flag-5'>指南</b>!

    社区安装IPC摄像头,跟安装一般安防监控摄像头有什么区别?

    为了保护社区或其他公共场所的安全,往往需要安装监控摄像头。但随着越来越多的公共安全事件发生,传统只单纯拍摄和记录画面的监控摄像头已不能满足社区安防的需求,需要更多功能的安防监控摄像头来进行更智能化
    的头像 发表于 04-03 10:00 ?645次阅读
    社区安装IPC<b class='flag-5'>摄像头</b>,跟安装一般安防监控<b class='flag-5'>摄像头</b>有什么区别?

    ArmSoM RK3588/RK3576核心板,Rockchip摄像头使用

    1. Camera 简介? ArmSoM系列产品使用的是mipi-csi接口的摄像头 ArmSoM-Sige7支持双摄同显: rk3588开发板 2. RK3588硬件通路框图? rk
    的头像 发表于 01-08 14:49 ?1021次阅读
    <b class='flag-5'>ArmSoM</b> RK3588/RK3576核心板,Rockchip<b class='flag-5'>摄像头</b>使用

    车载摄像头的EMC问题案例

    。它能够识别道路标志、检测障碍物、监控驾驶员状态,甚至与其他车辆和交通设施进行通信。 下面分享一个关于车载摄像头的EMC问题案例。 ? 实际案例 下图为某款车载摄像头通过车载国标三辐射测试的数据,我们可以看到在48MHz到68
    的头像 发表于 12-18 11:11 ?1533次阅读
    车载<b class='flag-5'>摄像头</b>的EMC问题案例

    安防监控摄像头气密性测试案例-连拓精密#摄像头气密检测设备

    摄像头
    连拓精密科技
    发布于 :2024年12月11日 15:00:21

    摄像头及红外成像的基本工作原理

    本文介绍了摄像头及红外成像的基本工作原理,摄像头可以将看到的图像真实的呈现出来,所见即所得! 摄像头如何工作? 摄像头可以将看到的图像真实的呈现出来,所见即所得。 ? 比如人眼看到的一
    的头像 发表于 11-25 09:28 ?2639次阅读
    <b class='flag-5'>摄像头</b>及红外成像的基本工作原理

    用于环视和CMS摄像头系统的四通道摄像头应用程序

    电子发烧友网站提供《用于环视和CMS摄像头系统的四通道摄像头应用程序.pdf》资料免费下载
    发表于 10-11 10:02 ?0次下载
    用于环视和CMS<b class='flag-5'>摄像头</b>系统的四通道<b class='flag-5'>摄像头</b>应用程序

    摄像头 PMIC 选型指南

    电子发烧友网站提供《摄像头 PMIC 选型指南.pdf》资料免费下载
    发表于 09-10 10:00 ?0次下载
    <b class='flag-5'>摄像头</b> PMIC 选型<b class='flag-5'>指南</b>

    LVGL开发指南介绍

    电子发烧友网站提供《LVGL开发指南介绍.pdf》资料免费下载
    发表于 09-09 10:24 ?21次下载

    TPS6503xx-Q1摄像头PMIC编程指南

    电子发烧友网站提供《TPS6503xx-Q1摄像头PMIC编程指南.pdf》资料免费下载
    发表于 09-03 14:14 ?1次下载
    TPS6503xx-Q1<b class='flag-5'>摄像头</b>PMIC编程<b class='flag-5'>指南</b>