欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > RK3588平台用v4l工具调试USB摄像头实践(亮度,饱和度,对比度,色相等)

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

2025/4/26 1:09:53 来源:https://blog.csdn.net/dpxiaolong/article/details/147408899  浏览:    关键词: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;

    }

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词