【python交互界面】實現動態觀察圖像在給定HSV范圍的區域顯示

HSV顏色空間

????????與RGB顏色空間相比,HSV顏色空間更適合進行顏色分析和提取特定顏色的目標。在HSV空間中,顏色信息被分布在不同的通道上,使我們能夠更準確地定義顏色的范圍,并使用閾值操作輕松地分離出我們感興趣的區域部分。

? ? ? ? HSV三個通道的含義

  1. 色相(Hue)表示顏色的類型或種類,而不受光照變化的影響。

  2. 飽和度(Saturation)表示顏色的純度或鮮艷程度。

  3. 明度(Value)表示顏色的亮度。

? ? ? ? 在提取期望顏色區域時,參考博客給出的HSV顏色識別-HSV基本顏色分量范圍-CSDN博客

滑動條交互界面的代碼實現?

# 通過滑動條動態觀察不同的HSV的閾值下圖像可顯示區域的變化過程import cv2
import numpy as npdef on_trackbar_min_hue(value):global min_huemin_hue = valuedef on_trackbar_max_hue(value):global max_huemax_hue = valuedef on_trackbar_min_saturation(value):global min_saturationmin_saturation = valuedef on_trackbar_max_saturation(value):global max_saturationmax_saturation = valuedef on_trackbar_min_value(value):global min_valuemin_value = valuedef on_trackbar_max_value(value):global max_valuemax_value = value# 創建一個空窗口
cv2.namedWindow('Color Range Visualization')# 創建滑動條并初始化HSV最小和最大值
min_hue, max_hue = 100, 130
min_saturation, max_saturation = 40, 255
min_value, max_value = 80, 255# 創建滑動條
cv2.createTrackbar('Min Hue', 'Color Range Visualization', min_hue, 179, on_trackbar_min_hue)
cv2.createTrackbar('Max Hue', 'Color Range Visualization', max_hue, 179, on_trackbar_max_hue)
cv2.createTrackbar('Min Saturation', 'Color Range Visualization', min_saturation, 255, on_trackbar_min_saturation)
cv2.createTrackbar('Max Saturation', 'Color Range Visualization', max_saturation, 255, on_trackbar_max_saturation)
cv2.createTrackbar('Min Value', 'Color Range Visualization', min_value, 255, on_trackbar_min_value)
cv2.createTrackbar('Max Value', 'Color Range Visualization', max_value, 255, on_trackbar_max_value)# 讀取示例圖像
image = cv2.imread("YOUR IMAGE PATH")
image = cv2.resize(image,(700,700))        # 圖片過小的話,窗口容不下這些控件
print(image.shape)while True:# 轉換圖像到HSV顏色空間hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)# 創建一個包含最小和最大HSV值的NumPy數組lower_range = np.array([min_hue, min_saturation, min_value])upper_range = np.array([max_hue, max_saturation, max_value])# 根據HSV范圍創建掩碼mask = cv2.inRange(hsv_image, lower_range, upper_range)# 將掩碼應用于原始圖像result = cv2.bitwise_and(image, image, mask=mask)# 在顯示窗口上實時顯示滑動條的數值text1 = f"Min Hue: {min_hue}  Max Hue: {max_hue}"cv2.putText(result, text1, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255, 255, 255), 2, cv2.LINE_AA)text2 = f"Min Saturation: {min_saturation}  Max Saturation: {max_saturation} "cv2.putText(result, text2, (10, 70), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255, 255, 255), 2, cv2.LINE_AA)text3 = f"Min Value: {min_value}  Max Value: {max_value}"cv2.putText(result, text3, (10, 110), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255, 255, 255), 2, cv2.LINE_AA)# 顯示結果圖像cv2.imshow('Original Image', image)cv2.imshow('Color Range Visualization', result)# 按下Esc鍵退出if cv2.waitKey(1) == 27:break# 釋放窗口和銷毀所有創建的窗口
cv2.destroyAllWindows()

運行結果示例

????????通過拉動上方的滑動條,不在滑動條對應的HSV范圍內區域將被[0,0,0]的mask淹沒,即可以實時可視化選定HSV范圍內的區域

????????如下圖所示,三張圖片依次為:滑動條窗口,選定HSV范圍內的區域可視化,輸入的原圖像

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

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

相關文章

二叉樹查找值為x的結點(C語言)

目錄 前言 查找值為x的結點 返回值為指針 返回值為布爾類型 整體代碼 前言 在二叉樹結點個數、葉子結點個數、樹的高度、第k層結點個數的計算(C語言)中,我們解決了關于二叉樹的部分問題,但是還有一個問題我們放在本篇解決。 …

數據集成和人工智能驅動的見解

數字時代使數據成為人們關注的焦點,將其從單純的二進制序列轉變為有價值的組織資產。隨著企業越來越多地轉向數據驅動戰略,數據管理的復雜性也隨之增加。當前的任務不僅僅是存儲甚至收集數據,而是將其轉化為可操作的情報。本博客旨在剖析尋求…

Python中的selenium安裝的步驟(瀏覽器自動化測試框架)

一、前言 我們今天要安裝的selenium 就是瀏覽器自動化測試框架,是一個用于Web應用程序的測試工具,就是模擬用戶操作。支持的瀏覽器包括Chrome,IE,Mozilla Firefox,Safari,Opera等。今天我們以Chrome為例講…

STM32單片機項目實例:基于TouchGFX的智能手表設計(2)UI交互邏輯的設計

STM32單片機項目實例:基于TouchGFX的智能手表設計(2)UI交互邏輯的設計 目錄 一、UI交互邏輯的設計 1.1 硬件平臺的資源 1.2 界面切換功能 ???????1.3 表盤界面 1.4 運動界面 ???????1.6 設置界面 ???????1.7 應…

不一樣的年會彩瞳推薦,綺芙莉多款彩瞳彰顯個性

臨近年底,各種公司年會、跨年晚會活動也逐漸排上日程,出席這種正式場合,每個人都有自己的“殺手锏”,從發型妝容到穿搭都是變美小細節,作為心靈之窗的雙眸,更需要一副彩瞳來提升我們的眼妝質感,…

微前端 ---- wujie-vue3 原理

目錄 前言 設置子應用? 預加載? 啟動子應用? 封裝 1.創建文件 2.安裝依賴 3.編寫組件 4.配置打包規則 5.執行打包命令 swc技術 SWC Babel Babel VS SWC 更改使用 swc 解析 使用swc 完成 esm 模式 (export--import) 發布到npm 更改p…

【SpringBoot】解析Springboot事件機制,事件發布和監聽

解析Springboot事件機制,事件發布和監聽 一、Spring的事件是什么二、使用步驟2.1 依賴處理2.2 定義事件實體類2.3 定義事件監聽類2.4 事件發布 三、異步調用3.1 啟用異步調用3.2 監聽器方法上添加 Async 注解 一、Spring的事件是什么 Spring的事件監聽(…

持續集成交付CICD:使用Jenkins插件上傳Nexus制品

目錄 一、實驗 1.使用Jenkins插件上傳Nexus制品 一、實驗 1.使用Jenkins插件上傳Nexus制品 (1)Jenkins安裝插件Nexus Artifact Uploader (2)添加憑據 (3)使用片段生成器生成DSL (4&#xf…

基于Java物業管理系統

基于Java物業管理系統 功能需求 1、房產信息管理:系統需要提供房產信息管理功能,包括房產的基本信息、租賃狀態、業主信息等。 2、報修管理:系統需要提供報修管理功能,業主可以通過系統提交報修申請,物業管理人員可…

docke網絡之bridge、host、none

一、bridge網絡 1.創建一個測試容器 [rootlocalhost ~]# docker run -d -it --name busybox_1 busybox /bin/sh -c "while true;do sleep 3600;done" 03b308c847edd23f21ba69afb825d92f7aaeb05b1ff4431dd47ccee439a0361a 2.查看當前機器docker有哪些網絡 [rootlocal…

C++ 訪問限定符

目錄 訪問修飾符概述 protected在類的內部和派生類中訪問調用 private在類的內部訪問和調用 訪問修飾符概述 在C中,有三個主要的訪問修飾符:public、private和protected。這些修飾符用于控制類的成員(變量和函數)的訪問權限。…

2023年9月8日 Go生態洞察:gopls的擴展與Go生態系統的成長

🌷🍁 博主貓頭虎(🐅🐾)帶您 Go to New World?🍁 🦄 博客首頁——🐅🐾貓頭虎的博客🎐 🐳 《面試題大全專欄》 🦕 文章圖文…

AI材料專題報告:AI革命催生新需求國產替代推動新方向

今天分享的AI系列深度研究報告:《AI材料專題報告:AI革命催生新需求國產替代推動新方向》。 (報告出品方:光大證券) 報告共計:25頁 1、算力需求增長催生 800G 光模塊需求 算力是數字經濟時代新生產力&…

2023年10月9日 Go生態洞察:深入了解類型推斷及其更多細節

🌷🍁 博主貓頭虎(🐅🐾)帶您 Go to New World?🍁 🦄 博客首頁——🐅🐾貓頭虎的博客🎐 🐳 《面試題大全專欄》 🦕 文章圖文…

【C++ Primer Plus學習記錄】if語句

目錄 一、if語句 二、if else語句 三、格式化if else語句 四、if else if else結構 一、if語句 if語句讓程序能夠決定是否應執行特定的語句。 if有兩種格式:if和if else。 if語句的語法與while相似: if(test-condition)statement; 如果test-con…

Android 從assets讀取文件裝載成Bitmap,Kotlin

Android 從assets讀取文件裝載成Bitmap,Kotlin /*** fileName assets里面圖片文件名*/fun readBitmapFromAssets(ctx: Context, fileName: String): Bitmap? {val assetManager: AssetManager ctx.assetsvar bitmap: Bitmap? nulltry {val inputStream assetMa…

Java預科知識

以下內容是根據狂神的Java說、chatgpt和csdn相關博客,結合自己的理解完成的。 Java了解 基于Java 開發了巨多的平臺,系統,工具 構建工具: Ant, Maven, Jekins應用服務器:Tomcat, Jetty, Jboss, Websphere, weblogic…

程序員入門:打造抖音同城外賣小程序的技術解析

在當今數字化時代,外賣平臺已經成為人們生活中不可或缺的一部分,而抖音作為一款社交媒體平臺,也開始涉足同城外賣服務。本文將為初學者提供一份關于如何打造抖音同城外賣平臺的技術解析,探討其中的關鍵技術和步驟。 一、項目規劃…

【C++】輸入輸出流 ⑤ ( cin 輸入流對象 | cin.ignore() 函數 | cin.peek() 函數 | cin.putback() 函數 )

文章目錄 一、cin.ignore() 函數1、cin.ignore() 函數簡介2、cin.ignore() 函數原型3、代碼示例 - cin.ignore() 函數 二、cin.peek() 函數1、cin.peek() 函數簡介2、代碼示例 - cin.peek() 三、cin.putback() 函數1、cin.putback() 函數簡介2、代碼示例 - cin.putback() 一、c…

if語句和switch語句來確定金額之下的優惠折扣

一、優惠規則 輸入相應的金額,可以獲得規則之下,金額相應的享受的折扣,需要先定義金額,然后就是使用if語句進行判斷,使用switch語句選擇判斷規則之下對應的優惠折扣。 二、相關代碼 public class DiscountPrice {p…