RK3588平台用v4l工具调试USB摄像头实践(亮度,饱和度,对比度,色相等)

目录

前言:v4l-utils简介

一:查找当前的摄像头设备

二:查看当前摄像头支持的v4l2-ctl调试参数

三根据提示设置对应参数,在提示范围内设置

四:常用调试命令

五:应用内执行命令方法


前言:v4l-utils简介

v4l-utils工具是由Linuxtv维护的一个V4L2开发套件,它提供一系列V4L2及media framework相关的工具,用来配置V4L2子设备的属性,测试V4L2设备,并提供如libv4l2.so开发库等等。

本章主要介绍v4l-utils中的两个命令行工具:media-ctlv4l2-ctl

  • media-ctl:用以查看、配置拓扑结构;
  • v4l2-ctl:用以配置v4l2 controls,可抓帧,设置vin、isp、sensor参数。

 Rockchip 发布的 Linux SDK 中,默认已集成了 v4l-utils 包。

一:查找当前的摄像头设备

grep '' /sys/class/video4linux/video*/name

红框代表是外接的USB摄像头

二:查看当前摄像头支持的v4l2-ctl调试参数

v4l2-ctl -d /dev/video21 --list-ctrls

  • 三根据提示设置对应参数,在提示范围内设置

亮度

v4l2-ctl -d /dev/video21 --set-ctrl 'brightness=64'

效果如下:

四:常用调试命令

亮度

v4l2-ctl -d /dev/video21 --set-ctrl 'brightness=64'

饱和度

v4l2-ctl -d /dev/video21 --set-ctrl 'saturation=100'

对比度

v4l2-ctl -d /dev/video21 --set-ctrl 'contrast=95'

锐度

v4l2-ctl -d /dev/video21 --set-ctrl 'sharpness=7'

五:应用内执行命令方法

Path = "/dev/video21"

    public static boolean upgradeRootPermission(String path) {

        Process process = null;

        DataOutputStream os = null;

        try {

            String cmd = "chmod 777 " + path;

            process = Runtime.getRuntime().exec("su"); //切换到root帐号

            os = new DataOutputStream(process.getOutputStream());

            os.writeBytes(cmd + "\n");

            os.writeBytes("exit\n");

            os.flush();

            process.waitFor();

        } catch (Exception e) {

        } finally {

            try {

                if (os != null) {

                    os.close();

                }

                process.destroy();

            } catch (Exception e) {

            }

        }

        try {

            if (process == null) {

                return false;

            }

            return process.waitFor() == 0;

        } catch (InterruptedException e) {

            e.printStackTrace();

        }

        return false;

}

Cmd示例:v4l2-ctl -d /dev/video21 --set-ctrl 'brightness=64'

    public static boolean exeCmdForSu(String command) {

        Log.d("exeCmdForSu", "command = " + command);

        boolean result = false;

        DataOutputStream dataOutputStream = null;

        BufferedReader errorStream = null;

        try {

            Process process = Runtime.getRuntime().exec("su");

            dataOutputStream = new DataOutputStream(process.getOutputStream());

            String s = command + "\n";

            dataOutputStream.write(s.getBytes(Charset.forName("utf-8")));

            dataOutputStream.flush();

            dataOutputStream.writeBytes("exit\n");

            dataOutputStream.flush();

            process.waitFor();

            errorStream = new BufferedReader(new InputStreamReader(process.getErrorStream()));

            String msg;

            String line;

            for (msg = ""; (line = errorStream.readLine()) != null; msg = msg + line) {

            }

            Log.d("exeCmdForSu", "exeCmdForSu msg is " + msg);

            if (!msg.contains("Failure")) {

                result = true;

            }

        } catch (Exception var16) {

            Exception e = var16;

            Log.e("exeCmdForSu", e.getMessage(), e);

        } finally {

            try {

                if (dataOutputStream != null) {

                    dataOutputStream.close();

                }

                if (errorStream != null) {

                    errorStream.close();

                }

            } catch (IOException var15) {

                IOException e = var15;

                Log.e("exeCmdForSu", e.getMessage(), e);

            }

        }

        return result;

    }

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

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

相关文章

Spring Security基础入门

本入门案例主要演示Spring Security在Spring Boot中的安全管理效果。为了更好地使用Spring Boot整合实现Spring Security安全管理功能,体现案例中Authentication(认证)和Authorization(授权)功能的实现,本案…

Trae+DeepSeek学习Python开发MVC框架程序笔记(二):使用4个文件实现MVC框架

修改上节文件,将test2.py拆分为4个文件,目录结构如下: mvctest/ │── model.py # 数据模型 │── view.py # 视图界面 │── controller.py # 控制器 │── main.py # 程序入口其中model.py代码如下&#xff…

从认证到透传:用 Nginx 为 EasySearch 构建一体化认证网关

在构建本地或云端搜索引擎系统时,EasySearch 凭借其轻量、高性能、易部署等优势,逐渐成为众多开发者和技术爱好者的首选。但在实际部署过程中,如何借助 Nginx 为 EasySearch 提供高效、稳定且安全的访问入口,尤其是在身份认证方面…

CPU 虚拟化机制——受限直接执行 (LDE)

1. 引言:CPU虚拟化的核心问题 让多个进程看似同时运行在一个物理CPU上。核心思想是时分共享 (time sharing) CPU。为了实现高效且可控的时分共享,本章介绍了一种关键机制,称为受限直接执行 (Limited Direct Execution, LDE)。 1.1 LDE的基本…

linux 中断子系统链式中断编程

直接贴代码了&#xff1a; 虚拟中断控制器代码&#xff0c;chained_virt.c #include<linux/kernel.h> #include<linux/module.h> #include<linux/clk.h> #include<linux/err.h> #include<linux/init.h> #include<linux/interrupt.h> #inc…

容器修仙传 我的灵根是Pod 第10章 心魔大劫(RBAC与SecurityContext)

第四卷&#xff1a;飞升之劫化神篇 第10章 心魔大劫&#xff08;RBAC与SecurityContext&#xff09; 血月当空&#xff0c;林衍的混沌灵根正在异变。 每道经脉都爬满黑色纹路&#xff0c;神识海中回荡着蛊惑之音&#xff1a;"破开藏经阁第九层禁制…夺取《太古弑仙诀》……

基于c#,wpf,ef框架,sql server数据库,音乐播放器

详细视频: 【基于c#,wpf,ef框架,sql server数据库&#xff0c;音乐播放器。-哔哩哔哩】 https://b23.tv/ZqmOKJ5

精益数据分析(21/126):剖析创业增长引擎与精益画布指标

精益数据分析&#xff08;21/126&#xff09;&#xff1a;剖析创业增长引擎与精益画布指标 大家好&#xff01;在创业和数据分析的探索道路上&#xff0c;我一直希望能和大家携手共进&#xff0c;共同学习。今天&#xff0c;我们继续深入研读《精益数据分析》&#xff0c;剖析…

Spark-streaming核心编程

1.导入依赖‌&#xff1a; <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming-kafka-0-10_2.12</artifactId> <version>3.0.0</version> </dependency> 2.编写代码‌&#xff1a; 创建Sp…

Kafka的ISR机制是什么?如何保证数据一致性?

一、Kafka ISR机制深度解析 1. ISR机制定义 ISR&#xff08;In-Sync Replicas&#xff09;是Kafka保证数据一致性的核心机制&#xff0c;由Leader副本&#xff08;复杂读写&#xff09;和Follower副本(负责备份)组成。当Follower副本的延迟超过replica.lag.time.max.ms&#…

Docker 基本概念与安装指南

Docker 基本概念与安装指南 一、Docker 核心概念 1. 容器&#xff08;Container&#xff09; 容器是 Docker 的核心运行单元&#xff0c;本质是一个轻量级的沙盒环境。它基于镜像创建&#xff0c;包含应用程序及其运行所需的依赖&#xff08;如代码、库、环境变量等&#xf…

数据库监控 | MongoDB监控全解析

PART 01 MongoDB&#xff1a;灵活、可扩展的文档数据库 MongoDB作为一款开源的NoSQL数据库&#xff0c;凭借其灵活的数据模型&#xff08;基于BSON的文档存储&#xff09;、水平扩展能力&#xff08;分片集群&#xff09;和高可用性&#xff08;副本集架构&#xff09;&#x…

OpenFeign和Gateway

OpenFeign和Gateway 一.OpenFeign介绍二.快速上手1.引入依赖2.开启openfeign的功能3.编写客户端4.修改远程调用代码5.测试 三.OpenFeign参数传递1.传递单个参数2.多个参数、传递对象和传递JSON字符串3.最佳方式写代码继承的方式抽取的方式 四.部署OpenFeign五.统一服务入口-Gat…

spark-streaming(二)

DStream创建&#xff08;kafka数据源&#xff09; 1.在idea中的 pom.xml 中添加依赖 <dependency><groupId>org.apache.spark</groupId><artifactId>spark-streaming-kafka-0-10_2.12</artifactId><version>3.0.0</version> </…

JAVA聚焦OutOfMemoryError 异常

个人主页 文章专栏 在正文开始前&#xff0c;我想多说几句&#xff0c;也就是吐苦水吧…最近这段时间一直想写点东西&#xff0c;停下来反思思考一下。 心中万言&#xff0c;真正执笔时又不知先写些什么。通常这个时候&#xff0c;我都会随便写写&#xff0c;文风极像散文&…

如何在Spring Boot中配置自定义端口运行应用程序

Spring Boot 应用程序默认在端口 8080 上运行嵌入式 Web 服务器&#xff08;如 Tomcat、Jetty 或 Undertow&#xff09;。然而&#xff0c;在开发、测试或生产环境中&#xff0c;开发者可能需要将应用程序配置为在自定义端口上运行&#xff0c;例如避免端口冲突、适配微服务架构…

linux嵌入式(进程与线程1)

Linux进程 进程介绍 1. 进程的基本概念 定义&#xff1a;进程是程序的一次执行过程&#xff0c;拥有独立的地址空间、资源&#xff08;如内存、文件描述符&#xff09;和唯一的进程 ID&#xff08;PID&#xff09;。 组成&#xff1a; 代码段&#xff1a;程序的指令。 数据…

智驭未来:NVIDIA自动驾驶安全白皮书与实验室创新实践深度解析

一、引言&#xff1a;自动驾驶安全的范式革新 在当今数字化浪潮的推动下&#xff0c;全球自动驾驶技术正大步迈入商业化的深水区。随着越来越多的自动驾驶车辆走上道路&#xff0c;其安全性已成为整个行业乃至社会关注的核心命题。在这个关键的转折点上&#xff0c;NVIDIA 凭借…

多模态大模型 Qwen2.5-VL 的学习之旅

Qwen-VL 是阿里云研发的大规模视觉语言模型&#xff08;Large Vision Language Model, LVLM&#xff09;。Qwen-VL 可以以图像、文本、检测框作为输入&#xff0c;并以文本和检测框作为输出。Qwen-VL 系列模型性能强大&#xff0c;具备多语言对话、多图交错对话等能力&#xff…

Redis 与 Memcache 全面对比:功能、性能与应用场景解析

Redis 和 Memcache 都是常用的内存数据库&#xff0c;以下是它们在多个方面的能力比较&#xff1a; 一、数据类型 Redis&#xff1a;支持丰富的数据类型&#xff0c;如字符串&#xff08;String&#xff09;、哈希&#xff08;Hash&#xff09;、列表&#xff08;List&#x…