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

目录

前言:v4l-utils简介

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

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

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

四:常用调试命令

五:应用内执行命令方法


前言: v4l-utils 简介

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

本章主要介绍v4l-utils中的两个命令行工具:media-ctl和v4l2-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;

}

相关推荐
2501_9151063210 小时前
常见 iOS 抓包工具的使用方式与组合思路
android·ios·小程序·https·uni-app·iphone·webview
鹏程十八少10 小时前
1.Android 3分钟跑通腾讯 Shadow 插件化官方Demo:零反射、手把手实战(基于源码依赖)
android·前端·面试
似霰10 小时前
HIDL Hal 开发笔记8----添加硬件访问服务
android·framework·hal
SY_FC10 小时前
niapp开发的 H5 被app嵌套,H5调用ios和安卓方法
android·ios·cocoa
假装我不帅10 小时前
rider开发asp.net webform项目
android·okhttp·asp.net
元媛媛11 小时前
UiPath |5个基础自动化场景
android·java·自动化
未来之窗软件服务11 小时前
幽冥大陆(九十七)分词服务训练源码dic生成 —东方仙盟练气期
android
码农水水11 小时前
阿里Java面试被问:RocketMQ的消息轨迹追踪实现
java·开发语言·windows·算法·面试·rocketmq·java-rocketmq
WTCLLB11 小时前
cmd-set-ip
网络·windows
APIshop11 小时前
实战解析:1688详情api商品sku、主图数据
java·服务器·windows