OpenCV 滑動條調整圖像對比度和亮度

一、知識點
1、int createTrackbar(const String & trackbarname, const String & winname, int * value, int count, TrackbarCallback onChange = 0, void * userdata = 0);
? (1)、創建一個滑動條并將其附在指定窗口上。
? (2)、參數說明:
? ? ? trackbarname: 創建的滑動條顯示名稱。
?? ? ?winname: 包含滑動條的窗口名稱。
?? ? ?value: 將由滑動條更改的整數值的指針。
?? ? ?count: 滑動條的最大位置。
? ? ? onChange: 回調函數,每次滑塊改變位置時會調用此函數。 函數原型void Foo(int, void *),第一個參數是滑動條位置,第二個參數是用戶數據。 如果為nullptr,則不會調用回調函數,但是value仍然自動更新。
?? ? ?userdata: 用戶數據,傳遞給回調函數。
?? ? ?
2、void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype = -1);
? (1)、計算兩個數組的加權和。 在多通道情況下,每個通道都是獨立處理的。
? (2)、算法代碼: dst = src1 * alpha + src2 * beta + gamma;
? (3)、參數說明:
? ? ? src1: 第一個輸入數組。
?? ? ?alpha: 第一個數組元素的權重。
?? ? ?src2: 第二個輸入數組,和src1大小和通道數相同。
?? ? ?beta: 第二個數組元素權重。
?? ? ?gamma: 標量,會添加到總和中。
?? ? ?dst: 輸出數組。
?? ? ?dtype: 輸出數組的可選深度。 當兩個輸入數組具有相同的深度時,dtype可以設置為-1,這相當于src1.depth()。
? (4)、src1 * alpha可以改變對比度,比如原先2個值為2、4,相差2,分別乘以2后為4、8,相差4,差值變大。
? (5)、gamma可以改變亮度,總和中每個像素的每個通道值都會加上gamma。
??
?? ? ?
?? ? ?
二、示例代碼: 滑動條調整圖像對比度和亮度

#include <iostream>
#include <opencv2/opencv.hpp>void onContrast(int value, void * pSrc)
{cv::Mat src = *((cv::Mat *)pSrc);cv::Mat temp = cv::Mat::zeros(src.size(), CV_8UC3);cv::Mat dst;double contrast = value / 50.0;cv::addWeighted(src, contrast, temp, 0.0, 0.0, dst);cv::imshow("對比度和亮度調整", dst);
}void onLightness(int value, void * pSrc)
{cv::Mat src = *((cv::Mat *)pSrc);cv::Mat temp = cv::Mat::zeros(src.size(), CV_8UC3);cv::Mat dst;cv::addWeighted(src, 1.0, temp, 0.0, value, dst);cv::imshow("對比度和亮度調整", dst);
}int main()
{cv::Mat src = cv::imread("../images/8.png");if (src.empty()){std::cout << "load src image error..." << std::endl;return -1;}cv::imshow("原始圖像", src);cv::namedWindow("對比度和亮度調整", cv::WINDOW_AUTOSIZE);int contrastValue = 50;cv::createTrackbar("對比度", "對比度和亮度調整", &contrastValue, 100, onContrast, &src);int lightnessValue = 50;cv::createTrackbar("亮度", "對比度和亮度調整", &lightnessValue, 100, onLightness, &src);cv::waitKey(0);return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/86375.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/86375.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/86375.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ReadWriteLock(讀寫鎖)和 StampedLock

1. ReadWriteLock&#xff08;讀寫鎖&#xff09;&#xff1a;實現高性能緩存 總結&#xff1a; 要點 內容 適用場景 讀多寫少、高并發讀取場景&#xff08;如緩存&#xff09; 鎖類型 ReadWriteLock接口&#xff0c;ReentrantReadWriteLock實現 讀鎖 vs 寫鎖 多線程可…

【決勝公務員考試】求職OMG——見面課測驗1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答題&#xff0c;大家注意呀&#xff01; 博主碼字不易點個關注吧,祝期末順利~~ 1.單選題(2分) 下列說法錯誤的是:&#xff08; B &#xff09; A.選調生屬于公務員系統 B.公務員屬于事業編 C.選調生有基層鍛煉的要求 D…

vue3 el-button 自定義本地圖標

設置不生效的原因可能有&#xff1a;1.style標簽里沒加scoped <style scoped></style>2.本地圖片路徑指向錯誤3.自定義圖片長寬沒設置4.deep深度選擇器使用錯誤&#xff0c;vue3用:deep() <el-tooltip content"重新匹配" placement"top"&g…

如何在最短時間內提升打ctf(web)的水平?

剛剛刷完2遍 bugku 的 web 題&#xff0c;前來答題。 每個人對刷題理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟著writeup做了一遍就等于刷了&#xff0c;還有的人是獨立思考做了一遍就等于刷了。…

6.8 note

paxos算法_初步感知 Paxos算法保證一致性主要通過以下幾個關鍵步驟和機制&#xff1a; 準備階段 - 提議者向所有接受者發送準備請求&#xff0c;請求中包含一個唯一的編號。 - 接受者收到請求后&#xff0c;會檢查編號&#xff0c;如果編號比它之前見過的都大&#xff0c;就會承…

c++ openssl 使用 DES(數據加密標準)進行加密和解密的基本操作

使用 DES&#xff08;數據加密標準&#xff09;進行加密和解密的基本操作&#xff0c;重點展示了 ECB 和 CBC 模式&#xff0c;并且通過篡改密文的方式來進行攻擊。下面是對每個部分的詳細解析。 1. 結構體 Slip struct Slip {char from[16] { 0 }; // 交易的發起者&#x…

OpenWrt:使用ALSA實現邊錄邊播

ALSA是Linux系統中的高級音頻架構&#xff08;Advanced Linux Sound Architecture&#xff09;。目前已經成為了linux的主流音頻體系結構&#xff0c;想了解更多的關于ALSA的知識&#xff0c;詳見&#xff1a;http://www.alsa-project.org 在內核設備驅動層&#xff0c;ALSA提供…

【.net core】天地圖坐標轉換為高德地圖坐標(WGS84 坐標轉 GCJ02 坐標)

類文件 public static class WGS84ToGCJ02Helper {// 定義一些常量private const double PI 3.14159265358979324;private const double A 6378245.0;private const double EE 0.00669342162296594323;// 判斷坐標是否在中國范圍內&#xff08;不在國內則不進行轉換&#x…

Matlab自學筆記五十七:符號運算、可變精度運算、雙精度浮點型運算,三種運算精度的概念、比較、選擇和應用

1.可變精度算術的概念 默認的&#xff0c;Matlab雙精度浮點數使用16位數字精度&#xff0c;而符號數學工具箱的vpa函數&#xff0c;提供了無限大的可變精度&#xff0c;它默認使用32位數字精度&#xff0c;32位指的是有效數字的位數&#xff1b; 2.具體用法 程序示例&#x…

由匯編代碼確定switch語句

int switch2(int x) {int result0;switch(x){/* switch語句主體缺失 */}return result; }在編譯函數時&#xff0c;GCC為程序的初始部分以及跳轉表生成了如下匯編代碼。 1 MOVL 8(%ebp), %eax ;x位于相對于寄存器%ebp偏移量為8的地方。 2 ADDL $2, %eax …

java 使用HanLP 入門教程

1. 安裝 HanLP Maven 依賴 <dependency><groupId>com.hankcs</groupId><artifactId>hanlp</artifactId><version>portable-1.8.4</version> <!-- 最新版本請查看官網 --> </dependency>注意&#xff1a;portable 版本…

vm虛擬機添加虛擬機無反應,獲取所有權

問題描述 虛擬機忘記關機&#xff0c;就把電腦關了&#xff0c;早上打開用不了了&#xff0c;重新添加&#xff0c;也沒反應&#xff0c;獲取所有權后就沒了 問題解決 將虛擬機文件目錄下的.lck文件夾&#xff0c;刪除&#xff0c;或者改個名&#xff0c;我是改為了.backup方…

為何選擇Spring框架學習設計模式與編碼技巧?

&#x1f4cc; 結論先行 推薦項目&#xff1a;Spring Framework 推薦理由&#xff1a;設計模式覆蓋全面 編碼技巧教科書級實現 Java 生態基石地位 &#x1f3c6; 三維度對比分析 維度SpringMyBatisXXL-JOB設計模式??????????代碼抽象??????????生態價…

MySQL 索引:聚集索引與二級索引

在數據庫性能優化的征途中&#xff0c;索引無疑扮演著至關重要的角色。正確理解和使用索引&#xff0c;能夠顯著提升查詢效率&#xff0c;為應用帶來絲滑般的操作體驗。今天&#xff0c;我們將深入 MySQL 的心臟&#xff0c;重點探討 InnoDB 存儲引擎中兩種核心的索引類型&…

【Elasticsearch】映射:詳解 _source store 字段

映射&#xff1a;詳解 _source & store 字段 1._source 字段1.1 特點1.2 示例 2.store 字段2.1 特點2.2 示例 3.兩者對比3.1 使用建議3.2 實際應用示例 1._source 字段 _source 是 Elasticsearch 中一個特殊的元字段&#xff0c;它存儲了文檔在索引時的原始 JSON 內容。 …

新建網站部署流程

1. 新建 Node 服務&#xff0c;指定端口并代理前端靜態資源 操作步驟&#xff1a; 初始化 Node 項目mkdir my-website && cd my-website npm init -y npm install express創建 app.js&#xff08;示例代碼&#xff09;const express require(express); const app e…

時序數據庫IoTDB結合SeaTunnel實現高效數據同步

益、基本概念介紹 1.1 Apache IoTDB Apache IoTDB是一款專為工業物聯網設計的時序數據庫管理系統&#xff0c;集數據收集、存儲、管理與分析于一體&#xff0c;滿足海量數據存儲、高速讀取及復雜數據分析需求。其架構包括時序文件&#xff08;TsFile&#xff09;、數據庫引擎…

k8s業務程序聯調工具-KtConnect

概述 原理 工具作用是建立了一個從本地到集群的單向VPN&#xff0c;根據VPN原理&#xff0c;打通兩個內網必然需要借助一個公共中繼節點&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;簡化了建立連接的過程&#xff0c;apiserver間接起到了中繼節…

RFID推動新能源汽車零部件生產系統管理應用案例

RFID推動新能源汽車零部件生產系統管理應用案例 一、項目背景 新能源汽車零部件場景 在新能源汽車零部件生產領域&#xff0c;電子冷卻水泵等關鍵部件的裝配溯源需求日益增長。傳統 RFID 溯源方案采用 “網關 RFID 讀寫頭” 模式&#xff0c;存在單點位單獨頭溯源、網關布線…

C#封裝HttpClient:HTTP請求處理最佳實踐

C#封裝HttpClient&#xff1a;HTTP請求處理最佳實踐 在現代的.NET應用程序開發中&#xff0c;與外部服務進行HTTP通信是一項常見需求。HttpClient作為.NET框架中處理HTTP請求的核心組件&#xff0c;為我們提供了強大而靈活的API。然而&#xff0c;直接使用原生的HttpClient可能…