opencv入門(6) TrackBar調整圖片和鍵盤響應

文章目錄

  • 1 創建trackbar
  • 2 使用userdata傳入函數
  • 3 鍵盤響應


1 創建trackbar

在這里插入圖片描述

1.trackbar名稱 2.創建在哪個窗口上 3.拖動trackbar改變的值 4.trackBar的最大值
5.trackbar改變時的回調函數 6. 帶入回調函數的數據,可以不用帶,是一個void指針
createTrackbar(“Value bar”, “亮度調整”, &lightness, max_value, on_tract);


Mat temp;
Mat dst;
Mat m;
Mat src;
int lightness = 50;
static void on_tract(int, void*)
{m = Scalar(lightness, lightness, lightness);add(src, m, dst);imshow("亮度調整", dst);}void QuickDemo::trackbar_demo(Mat &image)
{namedWindow("亮度調整", WINDOW_AUTOSIZE);dst = Mat::zeros(image.size(), image.type());//dst = image + Scalar(50, 50, 50);m = Mat::zeros(image.size(), image.type());src = image;int max_value = 100;// 1.trackbar名稱 2.創建在哪個窗口上 3.傳的值 4.trackBar的最大值// 5.trackbar改變時的回調函數 6. 需要帶入的數據,可以不用帶,是一個void指針createTrackbar("Value bar", "亮度調整", &lightness, max_value, on_tract);on_tract(50, 0);
}

在這里插入圖片描述

2 使用userdata傳入函數

在createTrackbar中,將image通過參數傳入到回調函數中,(void*)(&image);
在下面調用on_tract函數中,需要傳入image


void QuickDemo::trackbar_demo(Mat &image)
{namedWindow("亮度調整", WINDOW_AUTOSIZE);dst = Mat::zeros(image.size(), image.type());//dst = image + Scalar(50, 50, 50);m = Mat::zeros(image.size(), image.type());int max_value = 100;int lightness = 50;// 1.trackbar名稱 2.創建在哪個窗口上 3.傳的值 4.trackBar的最大值// 5.trackbar改變時的回調函數 6. 需要帶入的數據,可以不用帶,是一個void指針createTrackbar("Value bar", "亮度調整", &lightness, max_value, on_tract,(void*)(&image));on_tract(50, &image);
}

修改on_tract的函數,獲取userdata

static void on_tract(int b, void* userdata)
{Mat image = (*(Mat*)userdata);Mat dst = Mat::zeros(image.size(), image.type());;Mat m = Mat::zeros(image.size(), image.type());;m = Scalar(lightness, lightness, lightness);add(dst, m, image);imshow("亮度調整", dst);}

同樣可以調整其他的屬性
比如增強對比度,這里用addWeighted();來進行疊加
這個函數主要是dst = src1alpha + src2beta + gamma;
alpha 是 src1的權重,beta是src2的權重,gamma加到最終結果的標量值用于調整圖像的整體亮度
在這里插入圖片描述

	int contrast_value = 100;createTrackbar("Contrast Bar", "亮度調整", &contrast_value, 200, on_weighted_tract, (void*)(&image));on_weighted_tract(50, &image);static void on_weighted_tract(int b, void* userdata)
{Mat image = (*(Mat*)userdata);Mat dst = Mat::zeros(image.size(), image.type());;Mat m = Mat::zeros(image.size(), image.type());;double alpha = b/100.0;double beta = 0.0;double gamma = 0;// 這里相當于m沒有權重,只有第一張圖有權重,通過調整alpha的值來調整值的對比度addWeighted(image, alpha, m, beta, gamma, dst);imshow("亮度調整", dst);}

對比度是兩個像素點的差值,增加對比度,會讓兩個像素點之間的差距會變大
亮度是所有像素點的值都同步改變

3 鍵盤響應

監聽視頻的時候,waitkey(1);永遠是1

void QuickDemo::key_demo(Mat &image)
{Mat dst;while (true){// 監聽鍵盤操作int c = waitKey(100);if (c == 27) // key #esc{break;}if (c == 49){std::cout << "print key #1" << std::endl;cvtColor(image, dst, COLOR_BGR2GRAY);}if (c == 50){std::cout << "print key #2" << std::endl;cvtColor(image, dst, COLOR_BGR2GHSV);}if (c == 51){std::cout << "print key #3" << std::endl;dst = Scalar(50, 50, 50);add(image, dst, dst);}imshow("鍵盤響應", dst);}

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

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

相關文章

QT<33> 修改窗口標題欄背景顏色

前言&#xff1a; 在做項目或者開發QT軟件時&#xff0c;如果想要修改窗口標題欄背景顏色&#xff0c;發現沒有代碼可以直接設置&#xff0c;目前有兩種方法可以設置。 第一種&#xff0c;自定義一個界面類&#xff0c;用QLabelQWidget實現&#xff0c;QLabel當作標題欄。 第…

JavaEE-博客系統項目

項目介紹 準備工作 創建數據表 創建項目 添加依賴 創建對應目錄 除了基本的數據層mapper&#xff0c;業務層service&#xff0c;交互層controller&#xff0c;還創建了公共類的層common&#xff0c;枚舉類層enums&#xff0c;異常類層&#xff0c;和實體類層pojo。 配置項目配…

Java項目:基于SSM框架實現的軟件工程項目管理系統【ssm+B/S架構+源碼+數據庫+畢業論文+開題報告】

摘 要 現代經濟快節奏發展以及不斷完善升級的信息化技術&#xff0c;讓傳統數據信息的管理升級為軟件存儲&#xff0c;歸納&#xff0c;集中處理數據信息的管理方式。本項目管理系統就是在這樣的大環境下誕生&#xff0c;其可以幫助管理者在短時間內處理完畢龐大的數據信息&am…

[按鍵手機安卓/IOS腳本插件開發] 按鍵插件調試與判斷循環結構輔助工具

實現按鍵插件的核心原理 通過一個table類型的QMPlugin變量實現按鍵精靈調用Lua函數&#xff0c;例如 -- Lua代碼 -- 實現兩數相加求和 function QMPlugin.Add(a, b) return a b end 將以上代碼保存成.lua文件&#xff0c;例如test.lua后&#xff0c;放入按鍵精靈手機助手的p…

提示詞框架(9)--CARE

提示詞框架不止是AI的框架&#xff0c;也可以是我們的思考框架&#xff0c;拆解問題的方法&#xff01;&#xff01;&#xff01; CARE框架是一種用于優化提示詞設計的方法&#xff0c;它幫助用戶更有效地與AI進行交互&#xff0c;特別是在需要獲取特定信息或實現某些任務時。…

uniapp+vue2 input不顯示明文密碼,點擊小眼睛顯示或隱藏密碼

<u-input placeholder"請輸入密碼" prefixIcon"lock" :password"showPassword" v-model"formData.password"prefixIconStyle"font-size: 25px;color: #3C9CFF" border"none"><template slot"suffix…

時間序列的類增量學習:基準與評估

論文地址&#xff1a;https://dl.acm.org/doi/abs/10.1145/3637528.3671581 論文源碼&#xff1a;https://github.com/zqiao11/TSCIL 會議&#xff1a;SIGKDD 2024&#xff08;CCF-A&#xff09; 現實環境本質上是非平穩的&#xff0c;隨著時間推移常會引入新類別。這在時間序…

智能攻擊原理和架構

大家讀完覺得有幫助記得關注和點贊&#xff01;&#xff01;&#xff01; 智能攻擊系統基于**人工智能&#xff08;AI&#xff09;與大語言模型&#xff08;LLM&#xff09;技術**&#xff0c;通過**環境感知→自主決策→動態執行→對抗進化**的閉環架構實現高效網絡入侵。以下…

Beamer-LaTeX學習(教程批注版)【4】

眾所周知&#xff0c;隨著顯示器普及寬屏化&#xff0c;PPT排版需要多列化來充分利用頁面的橫向空間。 這節課我們來學習如何創建列&#xff0c;即在beamer中增加列內容&#xff0c;以及如何對齊列。 1 使用不同的寬度來創建列 在beamer中我們通過在頁面上使用columns環境來創…

通俗理解JVM細節-面試篇

文章目錄 前言JVM概述JVM是什么&#xff1f;解決了什么問題&#xff1f;JVM運行流程JVM 與 JRE&#xff0c;JDK的關系 JVM內存結構JVM區域劃分程序計數器棧堆方法區 類加載機制五個階段加載驗證準備解析初始化總結雙親委派模型 垃圾回收內存管理什么是GC&#xff1f;如何判定誰…

意識邊疆保衛戰:22:47深圳AI-BioFab人機融合危機全息實錄

前言 前些天發現了一個巨牛的人工智能免費學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到網站 &#x1f9e0;《意識邊疆保衛戰&#xff1a;22&#xff1a;47深圳AI-BioFab人機融合危機全息實錄》 副標題&#xff1a;機械義…

langchain從入門到精通(三十四)——RAG優化策略(十)父文檔檢索器實現拆分和存儲平衡

1. 拆分文檔與檢索的沖突 在 RAG 應用開發中&#xff0c;文檔拆分 和 文檔檢索 通常存在相互沖突的愿望&#xff0c;例如&#xff1a; 我們可能希望擁有小型文檔&#xff0c;以便它們的嵌入可以最準確地反映它們的含義&#xff0c;如果太長&#xff0c;嵌入/向量沒法記錄太多…

Javaweb - 7 xml

XML 是EXtensible Markup Language 的縮寫&#xff0c;翻譯過來就是可擴展標記語言。即&#xff0c;XML 和 HTML 一樣&#xff0c;都是標記語言&#xff0c;也就是說&#xff0c;它們的基本語法都是標簽。 特點&#xff1a; 1. 可擴展&#xff1a;即 XML 是允許自定義格式的。但…

qml實現 裁剪進度條

我們需要實現一個垂直進度條效果&#xff0c;但使用圖片裁剪的方式。具體需求&#xff1a; 1. 圖片位置固定&#xff0c;容器對齊其左邊和下邊&#xff0c;寬度和圖片相同。 2. 容器背景透明&#xff0c;調整裁剪容器的高度&#xff0c;使其有高度進度條的感覺&#xff08;從下…

Dify 工作流全棧解析:從零構建你的 AI 應用流程引擎

AI工作流的導言&#xff1a; 工作流系統&#xff08;Workflow System&#xff09;是 Dify 的核心組成部分&#xff0c;它通過可視化編程界面支持創建復雜的 AI 應用程序。用戶可以將不同的功能塊連接起來&#xff0c;從而設計出用于處理數據、與 AI 模型交互、管理條件以及執行…

上下位機通訊規則

0&#xff1a;事由 最近開發&#xff0c;上位機Qt與下位機通訊的時候發現通訊規則有些不一樣&#xff0c;這里簡單記錄一下 。所有代碼基于元寶生成&#xff0c;屬于偽代碼不保證真實可用&#xff0c;啊但是邏輯是這么個邏輯。 1&#xff1a;底層通訊規則 以STM32向上位機通訊…

創建平衡二叉樹C++

給你一個整數數組 nums &#xff0c;其中元素已經按 升序 排列&#xff0c;請你將其轉換為一棵 平衡 二叉搜索樹。 平衡二叉樹&#xff1a;每個節點的左右子樹高度差不超過1 class Solution { public:TreeNode* dfs(vector<int>& nums, int left, int right){if(l…

海光の初體驗

背景 八張K100的風扇已經將近一年沒轉過了…早在今年4月29日&#xff0c;Qwen3正式發布并全部開源8款「混合推理模型」。作為Qwen系列中的最新一代大型語言模型&#xff0c;Qwen3在推理、指令遵循、工具調用、多語言能力等方面進行了全面增強。海光DCU&#xff08;Deep Comput…

場外交易(OTC)財富管理系統開發及解決方案報告

——跨境金融科技賦能機構客戶新增長 一、OTC市場現狀與機構業務痛點 1. 政策機遇與市場擴容 “北向互換通”期限延長&#xff1a;2025年7月1日&#xff0c;中國外匯交易中心聯合香港交易所將利率互換合約期限延長至30年&#xff0c;首日交易規模達15.3億元&#xff0c;填補超…

pytorch底層原理學習--JIT與torchscript

文章目錄 0 目的1 TorchScript1.1 語言特性的限定性1.2 設計目的&#xff1a;模型表達的專注性 2pytorch JIT&#xff08;Just-in-time compilation)2.1pytorch JIT定義2.1pytorch JIT整個過程&#xff1a;1. 前端轉換層&#xff1a;生成靜態計算圖2. 中間表示層&#xff08;IR…