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.pswp.cn/web/76984.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/76984.shtml
英文地址,請注明出處:http://en.pswp.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…