瑞芯微平台RK3568系统开发(2)Camera 开发2

news2024/9/9 1:34:45

基于上文,继续

瑞芯微平台RK3568系统开发(2)Camera 开发1-CSDN博客

1、使用v4l2-ctl说明

media-ctl工具的操作是通过/dev/medio0等media设备,它所管理是media的拓扑结构中各个节点的format,大小,链接。

v4l2-ctl工具则是针对/dev/video0,/dev/video1等video设备,它在video设备上进行set_fmt,reqbuf,qbuf,dqbuf,stream_on,stream_off等一系列操作。

本文主要用v4l2-ctl进行采集帧数据,设置曝光、gain、VTS等v4l2_control。

建议先查看v4l2-ctl的帮助文档。

帮助文档内容比较多,分成很多个部分,我们比较关心的是其的streaming,vidcap。

帮助文档梗概如下:

[root@RK356X:~]# v4l2-ctl – help
General/Common options:
--all          display all information available
-C, --get-ctrl <ctrl>[,<ctrl>...]
get the value of the controls [VIDIOC_G_EXT_CTRLS]
-c, --set-ctrl <ctrl>=<val>[,<ctrl>=<val>...]
set the value of the controls [VIDIOC_S_EXT_CTRLS]
-D, --info          show driver info [VIDIOC_QUERYCAP]
-d, --device <dev> use device <dev> instead of /dev/video0 
if <dev> starts with a digit, then /dev/video<dev> is used
-e, --out-device <dev> use device <dev> for output streams instead of the default device as set with --device
if <dev> starts with a digit, then /dev/video<dev> is used
-h, --help display this help message

完整的帮助文档如下:

[root@RK356X:~]# v4l2-ctl --help-all 
General/Common options:
--all          display all information available
-C, --get-ctrl <ctrl>[,<ctrl>...]
get the value of the controls [VIDIOC_G_EXT_CTRLS]
-c, --set-ctrl <ctrl>=<val>[,<ctrl>=<val>...]
set the value of the controls [VIDIOC_S_EXT_CTRLS]
-D,           --info show driver info [VIDIOC_QUERYCAP]
-d, --device <dev> use device <dev> instead of /dev/video0
if <dev> starts with a digit, then /dev/video<dev> is used
-e, --out-device <dev> use device <dev> for output streams instead of the default device as set with --device
if <dev> starts with a digit, then /dev/video<dev> is used 
-h, --help          display this help message
--help-all          all options
--help-io          input/output options
--help-meta          metadata format options
--help-misc          miscellaneous options
--help-overlay          overlay format options
--help-sdr          SDR format options
--help-selection          crop/selection options
--help-stds           standards and other video timings options
--help-streaming          streaming options
--help-subdev          sub-device options
--help-tuner          tuner/modulator options
--help-vbi          VBI format options
--help-vidcap          video capture format options
--help-vidout          vidout output format options
--help-edid          edid handling options
-k, --concise          be more concise if possible.
-l, --list-ctrls          display all controls and their values [VIDIOC_QUERYCTRL]
-L, --list-ctrls-menus          display all controls and their menus [VIDIOC_QUERYMENU]

与streaming相关的参数如下:

[root@RK356X:~]# v4l2-ctl --help-streaming 
Video Streaming options:
--stream-count <count>
stream <count> buffers. The default is to keep streaming forever. This count does not include the number of initial skipped buffers as is passed by --stream-skip.
--stream-skip <count>
skip the first <count> buffers. The default is 0.
--stream-sleep <count>
sleep for 1 second every <count> buffers. If <count> is 0, then sleep forever right after streaming starts. The default i s -1 (never sleep).
--stream-to <file> 
stream to this file. The default is to discard the data. If <file> is '-', then the data is written to stdout and the --silent option is turned on automatically.
--stream-to-hdr <file>
stream to this file. Same as --stream-to, but each frame is prefixed by a header. Use for compressed data.
--stream-to-host <hostname[:port]>
stream to this host. The default port is 8362.
--stream-lossless always use lossless video compression.
--stream-poll          use non-blocking mode and select() to stream.

与vidcap相关的参数如下:

[root@RK356X:~]# v4l2-ctl --help-vidcap
Video Capture Formats options:
--list-formats          display supported video formats [VIDIOC_ENUM_FMT]
--list-formats-ext          display supported video formats including frame sizes and intervals
--list-framesizes <f>          list supported  framesizes for pixelformat <f> [VIDIOC_ENUM_FRAMESIZES] pixelformat is the fourcc value as a string
--list-frameintervals width=<w>, height=<h>, pixelformat=<f>          list supported frame intervals for pixelformat <f> and the given width and height [VIDIOC_ENUM_FRAMEINTERVALS] pixelformat is the fourcc value as a string
--list-fields          list supported fields for the current format
-V, --get-fmt-video           query the video capture format [VIDIOC_G_FMT]
-v, --set-fmt-video

2、使用v4l2-ctl抓帧

示例一,抓取RKCIF输出的1帧NV12数据保存到/tmp/nv12.bin,分辨率为640x480。

在保存数据前,先丢弃前面3帧

(即前面3帧虽然返回给userspace,但不保存到文件)。

$ v4l2-ctl -d/dev/video0\
--set-fmt-video=width=640,height=480, pixelformat=NV12 \
--stream-mmap=3 \
--stream-skip=3 \
--stream-to=/tmp/nv12. bin \
--stream-count=1 \
--stream-poll

运行过程中有<<<<符号输出,表示进度。

可以检查/tmp/nv12.bin文件大小,如果有数据表示抓取成功。

示例二,抓取RKISP输出的10帧NV12数据保存到/tmp/nv12.bin,分辨率为1920x1080

$ v4l2-ctl -d /dev/video0 \
--set-selection=target=crop, top=0, left=0, width=1920,height=1080 \
--set-fmt-video=width=1920, height=1080, pixelformat=NV12 \
--stream-mmap=3 \
--stream-to=/tmp/nv12. bin \
--stream-count=10 \
--stream-poll

同样运行过程中有<<<<符号输出,表示进度。

可以检查/tmp/nv12.bin文件大小,如果有数据表示抓取成功。

参数的说明:

-d,指定操作对象为/dev/video0设备。

--set-selection,指定对输入图像进行裁剪。特别是当RKISP1的前级大小发生变化时要保证selection不大于前级输出大小。RKCIF的裁剪则是通过--set-crop参数设置的

--set-fmt-video,指定了宽高及pxielformat(用FourCC表示)。NV12即用FourCC表示的pixelformat。

--stream-mmap,指定buffer的类型为mmap,即由kernel分配的物理连续的或经过iommu映射的buffer。

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

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

--stream-count,指定抓取的帧数,不包括--stream-skip丢弃的数量

--stream-poll,该选项指示v4l2-ctl采用异步IO,即在dqbuf前先用select等等帧数据完成,从而保证dqbuf不阻塞。否则dqbuf将会阻塞直到有数据帧到来

3、使用GStreamer

在Rockchip发布的LinuxSDK下,可以使用GStreamer预览Camera的图像、编码。

使用v4l2src plugin即可从video device中获取图像。

默认地,rkisp_3A_server也会随之启动调制(Tunning),从而能够得到亮度、色彩正常的图像。

3.1  使用GStreamer显示图像

以下命令可以将Camera图像显示在屏幕上。

$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/gstreamer-1.0
$ export XDG_RUNTIME_DIR=/tmp/.xdg
$ gst-launch-1.0 v4l2src device=/dev/video0! \
video/x-raw, format=NV12,width=640,height=480, framerate=30/1 ! kmssink

运行正常的话,屏幕上会显示出摄像头图像。

按ctrl+c结束程序即可退出。

3.2 GStreamer视频、图片编码

Linux SDK同时还带有硬件编码,如下命令可以将Camera数据流编码并保存成文件。

$ gst-launch-1.0 v4l2src device=/dev/video0 num-buffers=100 ! \
video/x-raw, format=NV12,width=640,height=480, framerate=30/1 ! \
videoconvert ! mpph264enc ! h264parse ! mp4mux ! \
filesink location=/tmp/h264.mp4

易百纳社区

$ gst-launch-1.0 -v v4l2src device=/dev/video0 num-buffers=10 ! \
video/x-raw, format=NV12,width=640,height=480 ! mppjpegenc ! \
multifilesink location=/tmp/test%05d. jpg

易百纳社区

3.3  无屏板子调试

Rockchip Linux SDK 提供了librkuvc.so,利用该接口可以将板子当作一个uvc camera使用, 通过usb otg与PC端相连接。

3.4  摄像头测试:qcamera

开发板上烧入Buildroot固件后,开机启动,

桌面上就会显示qcamera图标,用鼠标点击后,就会出现摄像头图像:

易百纳社区

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

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

相关文章

CTF学习笔记汇总(非常详细)零基础入门到精通,收藏这一篇就够了

CTF学习笔记汇总 Part.01 Web 01 SSRF 主要攻击方式如下&#xff1a; 01 对外网、服务器所在内网、本地进行端口扫描&#xff0c;获取一些服务的banner信息。 02 攻击运行在内网或本地的应用程序。 03 对内网Web应用进行指纹识别&#xff0c;识别企业内部的资产信息。 …

Studying-代码随想录训练营day45| 115.不同的子序列、583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结篇

第45天&#xff0c;子序列part03&#xff0c;编辑距离&#x1f4aa;(ง •_•)ง&#xff0c;编程语言&#xff1a;C 目录 115.不同的子序列 583. 两个字符串的删除操作 72. 编辑距离 编辑距离总结篇 115.不同的子序列 文档讲解&#xff1a;代码随想录不同的子序列 视频讲…

高效能程序员的9个习惯

最近看了一本关于敏捷软件开发实践的指南&#xff0c;他文中主要是在帮助软件开发者和团队提升工作效率、提高产品质量&#xff0c;并建立良好的工作文化和协作模式。以下是根据目录整理出的一段总结&#xff1a; 书名&#xff1a;《敏捷之道》 本书深入探讨了敏捷开发的核心原…

从 1 到 100 万+连接数,DigitalOcean 负载均衡的架构演进

在前不久&#xff0c;DigitalOcean 全球负载均衡器&#xff08;GLB&#xff09;Beta版正式上线。该解决方案能给客户的跨区域业务带来更好的支持&#xff0c;可以增强应用程序的弹性&#xff0c;消除单点故障&#xff0c;并大幅降低终端用户的延迟。这是 DigitalOcean 负载均衡…

Python写UI自动化--playwright(pytest.ini配置)

在 pytest.ini 文件中配置 playwright 的选项可以更好地控制测试执行的过程。 在终端输入pytest --help&#xff0c;可以找到playwright的配置参数 目录 1. --browser{chromium,firefox,webkit} 2. --headed 3. --browser-channelBROWSER_CHANNEL 4. --slowmoSLOWMO 5. …

魔众文库-PHP文库管理系统

魔众文库是一套基于PHPMYSQL开发的适用于多平台的文档管理系统&#xff0c;提供doc、ppt、excel、pdf、压缩包、图片、CAD 等资源的在线预览和下载&#xff0c;文件被转换为H5或图片格式&#xff0c;文字放大无失真&#xff0c;响应速度更快速对SEO更友好&#xff0c;收录更快、…

NFTScan | 07.22~07.28 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期&#xff1a;2024.07.22~ 2024.07.28 NFT Hot News 01/ 数据&#xff1a;NFT 系列 Liberty Cats 地板价突破 70000 MATIC 7 月 22 日&#xff0c;据 Magic Eden 数据&#xff0c;NFT 系列 Liberty C…

内网隧道学习笔记

1.基础&#xff1a; 一、端口转发和端口映射 1.端口转发是把一个端口的流量转发到另一个端口 2.端口映射是把一个端口映射到另一个端口上 二、http代理和socks代理 1.http带那里用http协议、主要工作在应用层&#xff0c;主要用来代理浏览网页。 2.socks代理用的是socks协议、…

c# string记录

c# srting 的操作例子 在C#中&#xff0c;string 类型是一个不可变&#xff08;immutable&#xff09;的引用类型&#xff0c;表示文本。由于它的不可变性&#xff0c;对字符串的任何修改操作实际上都会返回一个新的字符串实例。以下是一些常见的 string 操作例子&#xff1a; …

Hvv第二周,喝了3瓶红牛,心慌、头晕,我还行么?

Hvv第二周了&#xff0c;你们的物资挥霍的怎么样了啊&#xff1f;今天看到群里有小伙伴说喝了3瓶红牛&#xff0c;结果现在搞得头晕晕的&#xff0c;很慌。 Hvv物资来由 这不仅让我想来聊聊护网物资的来由和发展&#xff0c;也让后来进入网安这个行业的小伙伴了解一下&#xf…

【Plotly-驯化】一文教您画出Plotly中动态可视化饼图:pie技巧

【Plotly-驯化】一文教您画出Plotly中动态可视化饼图&#xff1a;pie技巧 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 免费获取相关内…

逻辑漏洞复现(pikachu靶场,大米cms)

逻辑漏洞 漏洞介绍 1.成因 逻辑漏洞是指由于程序逻辑不严或逻辑太复杂&#xff0c;导致一些逻辑分支不能够正常处理或处理错误&#xff0c;一般出现任意密码修改&#xff08;没有旧密码验证&#xff09;、越权访问、密码找回、交易支付金额等。 2. 分析 对常见的漏洞进行过…

Qt Phonon多媒体框架详解及简单实例分享

目录 1、Phonon 简介 2、Phonon基本类 2.1、VideoPlayer类 2.2、MediaObject类 2.3、Phonon::createPath() 2.4、AudioOutput类 2.5、VideoWidget Class 2.6、SeekSlider类 2.7、VolumeSlider类 3、Phonon 完整使用实例 4、总结 C++软件异常排查从入门到精通系列教程…

ChatGPT小狐狸AI付费创作系统v3.0.3+前端

小狐狸GPT付费体验系统的开发基于国外很火的ChatGPT&#xff0c;这是一种基于人工智能技术的问答系统&#xff0c;可以实现智能回答用户提出的问题。相比传统的问答系统&#xff0c;ChatGPT可以更加准确地理解用户的意图&#xff0c;提供更加精准的答案。同时&#xff0c;小狐狸…

项目管理“四管”法则

在项目管理中&#xff0c;“四管”的具体内容可能因不同的项目管理框架和实践而有所不同。但一般而言&#xff0c;它们可以概括为与项目成功密切相关的四个关键管理领域。以下是项目管理中“四管”&#xff1a; 一、人力资源管理&#xff08;管人&#xff09; 项目团队是项目…

AMQP-核心概念-终章

本文参考以下链接摘录翻译&#xff1a; https://www.rabbitmq.com/tutorials/amqp-concepts 连接&#xff08;Connections&#xff09; AMQP 0-9-1连接通常是长期保持的。AMQP 0-9-1是一个应用级别的协议&#xff0c;它使用TCP来实现可靠传输。连接使用认证且可以使用TLS保护…

Python 进行数据可视化(Matplotlib, Seaborn)

数据可视化是数据科学和分析中的重要工具&#xff0c;它通过图形表示数据&#xff0c;使得复杂的数据变得易于理解和分析。在Python中&#xff0c;最常用的两个数据可视化库是Matplotlib和Seaborn。 Matplotlib 1. 简介 Matplotlib是一个用于生成二维图形的Python库。它提供…

深入浅出消息队列----【阶段总结篇】

深入浅出消息队列----【阶段总结篇】 总览nameSrvBrokerproducer&#xff08;生产者&#xff09;consumer&#xff08;消费者&#xff09; 串联起来 本文仅是文章笔记&#xff0c;整理了原文章中重要的知识点、记录了个人的看法 文章来源&#xff1a;编程导航-鱼皮【yes哥深入浅…

小间距 LED 显示屏:引领显示技术新潮流

在现代显示技术领域&#xff0c;小间距LED显示屏以其先进的像素点控技术和卓越的显示效果&#xff0c;正逐渐成为市场的新宠。在此为您详细解析小间距LED显示屏相较于传统DLP背投显示屏的优势所在。 1、显示像素的完整性更高 在室内中高端显示市场中&#xff0c;DLP背投显示曾占…