OpenCV基礎(chǔ)HSV顏色空間*args與**kwargs滑動(dòng)條傳參問(wèn)題
一、基礎(chǔ)理論
HSV
:HSV是一種為了加快調(diào)色效率,且易于理解的概念。
Hue
:色相(具體的顏色)
Saturation
:飽和度、色彩純凈度
Value
:明度
1、Hue(色相)
Hue:色相(具體的顏色)
2、Value(明度)
明度:色彩的明亮程度,單通道亮度(并不等同于整體發(fā)光量)。
(明度越高越白,越低越黑,一般提高明度會(huì)同時(shí)提高R、G、B三通道的數(shù)值)
3、Saturation(飽和度)
Saturation:飽和度、色彩純度。(越低越灰,越高越純)
(一般調(diào)高飽和度會(huì)降低RGB中相對(duì)較低的數(shù)值,凸顯主要顏色的純度。 )
B站視頻講解:
短動(dòng)畫(huà)慢語(yǔ)速1分鐘講清影視調(diào)色中色彩形成原理基礎(chǔ)——RGB與HSV
二、hsv三通道及單通道效果
三、*args && **kwargs
*args
:傳入?yún)?shù)未知,且不需要知道參數(shù)名稱。
**args
:傳入?yún)?shù)未知,但需要知道參數(shù)名稱。
四、滾動(dòng)條控制h、s、v(min && max)
1、創(chuàng)建滾動(dòng)條
API
CV_EXPORTS int createTrackbar(const string& trackbarname, const string& winname, int* value, int count, TrackbarCallback onChange = 0, void* userdata = 0);
形式參數(shù)一trackbarname
:滑動(dòng)空間的名稱;
形式參數(shù)二winname
:滑動(dòng)空間用于依附的圖像窗口的名稱;
形式參數(shù)三value
:初始化閾值;
形式參數(shù)四count
:滑動(dòng)控件的刻度范圍;
形式參數(shù)五TrackbarCallback
:是回調(diào)函數(shù),其定義如下
typedef void (CV_CDECL *TrackbarCallback)(int pos, void* userdata);
# 3、創(chuàng)建h、s、v滾動(dòng)條 cv2.createTrackbar('hmin', 'h', 12, 179, Renew) cv2.createTrackbar('hmax', 'h', 37, 179, Renew) cv2.createTrackbar('smin', 's', 12, 179, Renew) cv2.createTrackbar('smax', 's', 37, 179, Renew) cv2.createTrackbar('vmin', 'v', 12, 179, Renew) cv2.createTrackbar('vmax', 'v', 37, 179, Renew)
2、回調(diào)函數(shù) -- 閾值設(shè)置
API
inRange()
主要是將在兩個(gè)閾值內(nèi)的像素值設(shè)置為白色(255),而不在閾值區(qū)間內(nèi)的像素值設(shè)置為黑色(0),該功能類似于之間所講的雙閾值化操作。
void inRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst);
參數(shù)1:輸入要處理的圖像,可以為單通道或多通道。
參數(shù)2:包含下邊界的數(shù)組或標(biāo)量。
參數(shù)3:包含上邊界數(shù)組或標(biāo)量。
參數(shù)4:輸出圖像,與輸入圖像src 尺寸相同且為CV_8U 類型。
(注:dst輸出二值化之后的圖像)
# 1、獲取滑動(dòng)條反饋值 hmin = cv2.getTrackbarPos('hmin', 'h') hmax = cv2.getTrackbarPos('hmax', 'h') smin = cv2.getTrackbarPos('smin', 's') smax = cv2.getTrackbarPos('smax', 's') vmin = cv2.getTrackbarPos('vmin', 'v') vmax = cv2.getTrackbarPos('vmax', 'v') # 2、設(shè)置閾值(inRange:在閾值(min,max)之內(nèi),設(shè)置為白色;在閾值之外,設(shè)置為黑色) h_thresh = cv2.inRange(np.array(h), np.array(hmin), np.array(hmax)) s_thresh = cv2.inRange(np.array(s), np.array(smin), np.array(smax)) v_thresh = cv2.inRange(np.array(v), np.array(vmin), np.array(vmax))
3、回調(diào)函數(shù) -- 感興趣值
API
bitwise_and()
圖像的與運(yùn)算主要用于獲取某個(gè)圖像中感興趣的部分,是針對(duì)兩個(gè)圖像矩陣數(shù)組或一個(gè)數(shù)組與標(biāo)量的按位與。
# 3、獲取感興趣二值(與運(yùn)算) interest = cv2.bitwise_and(h_thresh, cv2.bitwise_and(s_thresh, v_thresh))
總代碼
# HSV顏色空間與滑動(dòng)條(*args && **args) import cv2 import numpy as np # 回調(diào)函數(shù) # *args:傳入?yún)?shù)未知,且不需要知道參數(shù)名稱 # **args:傳入?yún)?shù)未知,但需要知道參數(shù)名稱 def HSV_CallBack(*args): # 1、獲取滑動(dòng)條反饋值 hmin = cv2.getTrackbarPos('hmin', 'h_binary') hmax = cv2.getTrackbarPos('hmax', 'h_binary') smin = cv2.getTrackbarPos('smin', 's_binary') smax = cv2.getTrackbarPos('smax', 's_binary') vmin = cv2.getTrackbarPos('vmin', 'v_binary') vmax = cv2.getTrackbarPos('vmax', 'v_binary') # 2、設(shè)置閾值(inRange:在閾值(min,max)之內(nèi),設(shè)置為白色;在閾值之外,設(shè)置為黑色) h_binary = cv2.inRange(np.array(h), np.array(hmin), np.array(hmax)) s_binary = cv2.inRange(np.array(s), np.array(smin), np.array(smax)) v_binary = cv2.inRange(np.array(v), np.array(vmin), np.array(vmax)) # 3、獲取感興趣二值(與運(yùn)算) binary = cv2.bitwise_and(h_binary, cv2.bitwise_and(s_binary, v_binary)) # 4、顯示 cv2.imshow('h_binary', h_binary) cv2.imshow('s_binary', s_binary) cv2.imshow('v_binary', v_binary) cv2.imshow('binary', binary) def Show_HSV(): global hsv, h, s, v # 0、創(chuàng)建窗口 cv2.namedWindow('h_binary') cv2.namedWindow('s_binary') cv2.namedWindow('v_binary') # 1、獲取hsv圖片 hsv = cv2.cvtColor(img, cv2.COLOR_RGB2HSV) cv2.imshow('hsv', hsv) # 2、獲取h、s、v三通道圖片 h, s, v = cv2.split(hsv) # 3、創(chuàng)建h、s、v滾動(dòng)條 cv2.createTrackbar('hmin', 'h_binary', 12, 179, HSV_CallBack) cv2.createTrackbar('hmax', 'h_binary', 37, 179, HSV_CallBack) cv2.createTrackbar('smin', 's_binary', 12, 179, HSV_CallBack) cv2.createTrackbar('smax', 's_binary', 37, 179, HSV_CallBack) cv2.createTrackbar('vmin', 'v_binary', 12, 179, HSV_CallBack) cv2.createTrackbar('vmax', 'v_binary', 37, 179, HSV_CallBack) HSV_CallBack() if __name__ == '__main__': global img img = cv2.imread('Resource/test.jpg') cv2.imshow('img', img) # 顯示h、s、v Show_HSV() cv2.waitKey(0)
參考資料
短動(dòng)畫(huà)慢語(yǔ)速1分鐘講清影視調(diào)色中色彩形成原理基礎(chǔ)——RGB與HSV_嗶哩嗶哩_bilibili
Python編程中*args與**kwargs區(qū)別作用詳解
以上就是OpenCV基礎(chǔ)HSV顏色空間*args與**args滑動(dòng)條傳參問(wèn)題的詳細(xì)內(nèi)容,更多關(guān)于HSV顏色空間*args與**args滑動(dòng)條傳參的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python使用defaultdict解決字典默認(rèn)值
本文主要介紹了Python使用defaultdict解決字典默認(rèn)值,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04如何基于matlab相機(jī)標(biāo)定導(dǎo)出xml文件
這篇文章主要介紹了如何基于matlab相機(jī)標(biāo)定導(dǎo)出xml文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11用python 批量操作redis數(shù)據(jù)庫(kù)
這篇文章主要介紹了如何用python 批量操作redis數(shù)據(jù)庫(kù),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03Python調(diào)用釘釘自定義機(jī)器人的實(shí)現(xiàn)
這篇文章主要介紹了Python調(diào)用釘釘自定義機(jī)器人的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01對(duì)Python正則匹配IP、Url、Mail的方法詳解
今天小編就為大家分享一篇對(duì)Python正則匹配IP、Url、Mail的方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12Python數(shù)據(jù)處理之臨近匹配的實(shí)現(xiàn)詳解
在數(shù)據(jù)處理中,經(jīng)常需要找到最接近給定值的元素或數(shù)據(jù)點(diǎn),這種需求在科學(xué)、工程和統(tǒng)計(jì)分析中非常常見(jiàn),Python 提供了多種方法來(lái)實(shí)現(xiàn)這種臨近匹配,下面就跟隨小編一起學(xué)習(xí)一下吧2024-02-02詳解如何在pyqt中通過(guò)OpenCV實(shí)現(xiàn)對(duì)窗口的透視變換
這篇文章主要介紹了如何在pyqt中通過(guò)OpenCV實(shí)現(xiàn)對(duì)窗口的透視變換,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09python利用json和pyecharts畫(huà)折線圖實(shí)例代碼
這篇文章主要介紹了python利用json和pyecharts畫(huà)折線圖實(shí)例,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12