4、v4l-utils工具包

v4l-utils主要包含两个常用工具,分别是media-ctl、v4l2-ctl

4.1、安装v4l-utils

  • Android系统默认支持

    • UBUNTU系统安装方法

      $ apt-get install v4l-utils
      
  • Buildroot系统安装方法

    $ vim buildroot/configs/rockchip_rk1808_defconfigBR2_PACKAGE_LIBV4L_UTILS=y
    

4.2、media-ctl工具

  • media-ctl工具的作用

    1. 配置拓扑结构中各节点的format、大小、链接

    2. 操作/dev/medio0节点

获取Camera支持数据格式

RK3568 Android11.0测试没有此选项

$ media-ctl --known-mbus-fmts

查看设备链路

分析输出信息,可获取到设备链路是否正常

$ media-ctl -d /dev/media0 -p
  • media0设备信息

    Media controller API version 0.1.0
    Media device information
    driver          rkisp1           // rkisp1代表media0是rkisp1加载后创建的
    model           rkisp1
    serial
    bus info
    hw revision     0x0
    driver version  0.0.0
    
  • ISP设备节点

    ISP设备节点比较多,主要关注entity1节点

    确认连接的DPHY设备号正常即可

    Device topology
    - entity 1: rkisp1-isp-subdev (4 pads, 7 links)type V4L2 subdev subtype Unknown flags 0device node name /dev/v4l-subdev0pad0: Sink[fmt:SRGGB12_1X12/1920x1080 field:nonecrop.bounds:(0,0)/1920x1080crop:(0,0)/1920x1080]<- "rkisp1_dmapath":0 []<- "rockchip-mipi-dphy-rx":1 [ENABLED]pad1: Sink<- "rkisp1-input-params":0 [ENABLED]pad2: Source[fmt:YUYV8_2X8/1920x1080 field:nonecrop.bounds:(0,0)/1920x1080crop:(0,0)/1920x1080]-> "rkisp1_selfpath":0 [ENABLED]-> "rkisp1_mainpath":0 [ENABLED]-> "rkisp1_rawpath":0 [ENABLED]pad3: Source-> "rkisp1-statistics":0 [ENABLED]- entity 2: rkisp1_mainpath (1 pad, 1 link)type Node subtype V4L flags 0device node name /dev/video0pad0: Sink<- "rkisp1-isp-subdev":2 [ENABLED]- entity 3: rkisp1_selfpath (1 pad, 1 link)type Node subtype V4L flags 0device node name /dev/video1pad0: Sink<- "rkisp1-isp-subdev":2 [ENABLED]- entity 4: rkisp1_rawpath (1 pad, 1 link)type Node subtype V4L flags 0device node name /dev/video2pad0: Sink<- "rkisp1-isp-subdev":2 [ENABLED]- entity 5: rkisp1_dmapath (1 pad, 1 link)type Node subtype V4L flags 0device node name /dev/video3pad0: Source-> "rkisp1-isp-subdev":0 []- entity 6: rkisp1-statistics (1 pad, 1 link)type Node subtype V4L flags 0device node name /dev/video4pad0: Sink<- "rkisp1-isp-subdev":3 [ENABLED]- entity 7: rkisp1-input-params (1 pad, 1 link)type Node subtype V4L flags 0device node name /dev/video5pad0: Source-> "rkisp1-isp-subdev":1 [ENABLED]
    
  • DPHY设备节点

    - entity 8: rockchip-mipi-dphy-rx (2 pads, 2 links)type V4L2 subdev subtype Unknown flags 0device node name /dev/v4l-subdev1pad0: Sink[fmt:SRGGB12_1X12/1920x1080 field:none]<- "m00_b_imx327 2-001a":0 [ENABLED]pad1: Source[fmt:SRGGB12_1X12/1920x1080 field:none]-> "rkisp1-isp-subdev":0 [ENABLED]
    
  • Sensor设备节点

    - entity 9: m00_b_imx327 2-001a (1 pad, 1 link)type V4L2 subdev subtype Sensor flags 0device node name /dev/v4l-subdev2pad0: Source[fmt:SRGGB12_1X12/1920x1080@10000/300000 field:none]-> "rockchip-mipi-dphy-rx":0 [ENABLED]
    

参数解析:

​ entity 节点

​ pad 连接其他entity数量

​ Source

​ Sink

​ link 连线数量

开关Camera

/* 关闭摄像头 */
$ media-ctl -l '"m00_b_imx327":0->"rockchip-mipi-dphy-rx":0[0]'/* 开启摄像头 */
$ media-ctl -l '"m00_b_imx327":0->"rockchip-mipi-dphy-rx":0[1]'

参数解析:

1、media-ctl -l ‘“entity name”:pad->“entity name”:pad[Status]’

2、整个 link 需要用单引号, 因为有特殊字符如 > [ ]

3、Entity name 需要用双引号, 因为中间有空格

4、Status 用 0 或 1 表示 Active 或 In-Active, 需要用中括号

多摄像头时,只能开启一个

设置Sensor信息

//设置sensor输出分辨率
$ media-ctl -d /dev/media0 --set-v4l2 '"m00_b_imx327 2-001a":0[fmt:SRGGB12_1X12/1920x1080@10000/300000]'//设置isp的接收(从mipi dphy)格式及大小,格式要求与sensor输出相同
$ media-ctl -d /dev/media0 --set-v4l2 '"rkisp1-isp-subdev":0[fmt:SRGGB12_1X12/1920x1080@10000/300000]'//isp 接收的大小可以 crop(裁剪)(缩小分辨率)
$ media-ctl -d /dev/media0 --set-v4l2 '"rkisp1-isp-subdev":0[crop:(0,0)/1920x1080@10000/300000]'//设置 isp 输出的, YUV 格式只能是 YUYV2X8
$ media-ctl -d /dev/media0 --set-v4l2 '"rkisp1-isp-subdev":2[fmt:SRGGB12_1X12/1920x1080@10000/300000]'//isp 输出也有 crop 功能(缩小分辨率)
$ media-ctl -d /dev/media0 --set-v4l2 '"rkisp1-isp-subdev":2[crop:(0,0)/1920x1080@10000/300000]'$ media-ctl -d /dev/media0 --set-v4l2 '"ov5695 7-0036":0[fmt:SBGGR10_1X10/2592x1944]'$ media-ctl -d /dev/media0 --set-v4l2 '"rkisp1-isp-subdev":0[fmt:SBGGR10_1X10/2592x1944]'
$ media-ctl -d /dev/media0 --set-v4l2 '"rkisp1-isp-subdev":0[crop:(0,0)/2592x1944]'$ media-ctl -d /dev/media0 --set-v4l2 '"rkisp1-isp-subdev":2[fmt:YUYV8_2X8/2592x1944]'
$ media-ctl -d /dev/media0 --set-v4l2 '"rkisp1-isp-subdev":2[crop:(0,0)/2592x1944]'

4.3、v4l2-ctl工具

  • v4l2-ctl工具的作用

    配置 v4l2 controls, 可抓帧, 设置 cif、isp、sensor 参数

    操作/dev/video0节点

剪裁偏移图像

$ v4l2-ctl -d /dev/video4 \--set-selection=target=crop,top=336,left=432,width=1920,height=1080 \--set-fmt-video=width=1280,height=720,pixelformat=NV21 \--stream-mmap=3 --stream-to=/tmp/mp.out --stream-count=20 --stream-poll

参数说明:

–set-selection=target=crop,top=336,left=432,width=1920,height=1080 裁剪,并偏移

$ v4l2-ctl -d /dev/video4 \--set-ctrl 'exposure=1216,analogue_gain=10' \--set-selection=target=crop,top=0,left=0,width=2592,height=1944 \--set-fmt-video=width=2592,height=1944,pixelformat=BG10 \--stream-mmap=3 --stream-to=/tmp/mp.raw.out --stream-count=1 --stream-poll

抓取一帧RAW数据

// RK1808测试命令
$ v4l2-ctl -d /dev/video0 \--set-fmt-video=width=1920,height=1080,pixelformat=NV12 \--stream-mmap=3 \--stream-skip=3 \--stream-to=/data/NV12.out \--stream-count=1 \--stream-poll// RK3568测试命令
$ v4l2-ctl -d /dev/video0 \--set-fmt-video=width=1920,height=1080,pixelformat=NV12 \--stream-mmap=3 \--stream-skip=100 \--stream-to=/data/NV12.out \--stream-count=1 \--stream-poll

参数说明:

-d /dev/video0 指定video设备

–set-fmt-video 指定宽高及pxielformat

pixelformat=NV12 格式 FourCC编码

–stream-mmap 指定 buffer 的类型为 mmap

–stream-skip 指定丢弃(不保存到文件) 前 3 帧

–stream-to 指定帧数据保存的文件路径

–stream-count 指定抓取的帧数

–stream-poll 该选项指示 v4l2-ctl 采用异步 IO

扩展知识:

FourCC与mbus-fmt的区别

mbus-fmt 在物理总线上传输的格式

FourCC 图像视频在内存中存储的格式

查看RAW数据

RAW图像查看工具:7yuv

  1. 下载7yuv工具

  2. 使用7yuv工具打开图片(默认格式并不能查看图片内容)

  3. 调整解析图片格式(查看datasheet可得知Sensor输出图片格式)

    主要调整项:分辨率、格式、位数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AHYUauah-1627094399468)(https://i.loli.net/2021/07/24/zkVtSH7rRxMgGAQ.png)]

v4l-utils工具包相关推荐

  1. Fabric 1.0源代码分析(41)putils(protos/utils工具包)

    # Fabric 1.0源代码笔记 之 putils(protos/utils工具包) ## 1.putils概述 putils,即protos/utils工具包,代码分布在:protos/utils ...

  2. Utils(一) 介绍

    Utils是一个常用Java工具类的集成包.优秀的工具类库已经很多了,例如commons-lang3.guava等,但Utils并非是在造轮子,团队内使用工具类库的方式及风格都不一致,将会导致出现代码 ...

  3. 区块链教程Fabric1.0源代码分析Tx(Transaction 交易)二

    4.交易相关部分工具函数(protos/utils包) putils更详细内容,参考:Fabric 1.0源代码笔记 之 putils(protos/utils工具包) 5.RWSet(读写集) RW ...

  4. 考试系统(未完成的小程序)

    系统组成: 1.用于封装get和set(name,idcard,grade,examid,location)方法的test_system包 2.用于封装add,delect和find方法的deo包 3 ...

  5. android umeng,GitHub - umeng/umeng_community_android: 友盟微社区Android SDK开源项目

    友盟微社区 Android SDK 该项目是友盟微社区的开源部分代码,根目录下的工程为集成友盟微社区SDK的demo,umeng_comm_android_ui为友盟微社区开源UI代码,里面包含了友盟 ...

  6. Bootstrap4+MySQL前后端综合实训-Day06-AM【eclipse详细配置Tomcat、开发web项目、servlet、连接MySQL8.0数据库、用户登录界面的编写与验证、分页查询】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目   录 eclipse重置视图 MySQL数据库--建数据库.建数据库 s ...

  7. Bootstrap4+MySQL前后端综合实训-Day05-AM【MySQL数据库(SQLyog软件基本操作、架构设计器)、eclipse(JDBC开发-添加驱动、构建路径、增删改查基本测试)】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记] 目   录 MySQL数据库--建库.建表 新建连接.测试连接 新建news_manager数据库 ...

  8. python接口测试_Python接口自动化测试框架实战开发(一)

    目录 一丶叙述 二丶接口基础知识 三丶接口测试工具 四丶Fiddler的使用 五丶unittest使用 六丶mock服务入门到实战 七丶接口自动化框架设计到开发 一丶叙述 1.项目介绍 整个项目分为四 ...

  9. Springboot Vue Login(从零开始实现Springboot+Vue登录)

    实现前端后端分离,在 Github 上有一个很好的开源项目:mall,正所谓百看不如一练,自己动手实现了一个 Springboot+Vue 的登录操作,在此记录一下踩过的坑. 文章最后补充两端的 Gi ...

  10. (转) 淘淘商城系列——使用FastDFS-Client客户端进行上传图片的测试

    http://blog.csdn.net/yerenyuan_pku/article/details/72804018 不久之前,我们实现了商品的类目选择这个功能,但这只是万里长征的第一步,我们还有很 ...

最新文章

  1. linux 发行版 suse opensuse 区别
  2. SAP FICO年结
  3. 你应该如何选择笔记软件?
  4. 机器学习笔试面试超详细总结(四)
  5. RDL(C) Report Design Step by Step 1: DrillThrough Report
  6. android版本升级功能,手机安卓系统怎么升级 安卓系统更新升级的三种方法介绍...
  7. 微信怎么测试好友软件,三种方法教你检测微信中的僵尸粉!不要再用第三方软件了哦...
  8. 常见通信RF指标的内在和意义
  9. 获取图片的十六进制颜色码(keynote/ppt取色器)
  10. 大家推荐的入门心理学书籍
  11. 分享一个AUTO uninstaller|AUTOCAD 安装失败解决方案
  12. Scheme语言学习---求解三个数中其中两个较大数的和
  13. staf linux运行模式,【转】windows和linux下安装STAF
  14. zabbix 自动发现/自定义宏
  15. 华为数通笔记-AAA
  16. 仿 Cuto 壁纸应用的加载动画
  17. 如果让你选最佳的远程桌面,以下9款远程桌面你心中的排名 NO1 是哪个?
  18. 贝叶斯估计及其派生估计准则(极大似然、最大后验证、最小均方)
  19. 浅谈移动端——前端适配详解
  20. 教你远程桌面如何传递声音

热门文章

  1. 2021全球与中国显微镜载玻片市场现状及未来发展趋势
  2. postman连接数据库
  3. 魅族MX2去除smartbar教程
  4. CAD制图教程:CAD软件中怎么定义层高?
  5. 对话小岛:DeFi科学家、社区建设与YSD |链捕手
  6. html里range怎么改样式,CSS之修改input range样式
  7. 如何将一块移动硬盘分区成mac专区和windows专区
  8. etag java_HTTP头信息中的参数Etag
  9. SP1043 GSS1 - Can you answer these queries I(猫树)
  10. myeclipse中html中文乱码