OpenCV基礎HSV顏色空間*args與**kwargs滑動條傳參問題
一、基礎理論
HSV:HSV是一種為了加快調(diào)色效率,且易于理解的概念。
Hue:色相(具體的顏色)
Saturation:飽和度、色彩純凈度
Value:明度
1、Hue(色相)
Hue:色相(具體的顏色)

2、Value(明度)
明度:色彩的明亮程度,單通道亮度(并不等同于整體發(fā)光量)。
(明度越高越白,越低越黑,一般提高明度會同時提高R、G、B三通道的數(shù)值)
3、Saturation(飽和度)
Saturation:飽和度、色彩純度。(越低越灰,越高越純)
(一般調(diào)高飽和度會降低RGB中相對較低的數(shù)值,凸顯主要顏色的純度。 )

B站視頻講解:
短動畫慢語速1分鐘講清影視調(diào)色中色彩形成原理基礎——RGB與HSV
二、hsv三通道及單通道效果



三、*args && **kwargs
*args:傳入?yún)?shù)未知,且不需要知道參數(shù)名稱。

**args:傳入?yún)?shù)未知,但需要知道參數(shù)名稱。

四、滾動條控制h、s、v(min && max)
1、創(chuàng)建滾動條
API
CV_EXPORTS int createTrackbar(const string& trackbarname, const string& winname,
int* value, int count,
TrackbarCallback onChange = 0,
void* userdata = 0);
形式參數(shù)一trackbarname:滑動空間的名稱;
形式參數(shù)二winname:滑動空間用于依附的圖像窗口的名稱;
形式參數(shù)三value:初始化閾值;
形式參數(shù)四count:滑動控件的刻度范圍;
形式參數(shù)五TrackbarCallback:是回調(diào)函數(shù),其定義如下
typedef void (CV_CDECL *TrackbarCallback)(int pos, void* userdata);
# 3、創(chuàng)建h、s、v滾動條
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ù) -- 閾值設置
API
inRange()
主要是將在兩個閾值內(nèi)的像素值設置為白色(255),而不在閾值區(qū)間內(nèi)的像素值設置為黑色(0),該功能類似于之間所講的雙閾值化操作。
void inRange(InputArray src, InputArray lowerb,
InputArray upperb, OutputArray dst);
參數(shù)1:輸入要處理的圖像,可以為單通道或多通道。
參數(shù)2:包含下邊界的數(shù)組或標量。
參數(shù)3:包含上邊界數(shù)組或標量。
參數(shù)4:輸出圖像,與輸入圖像src 尺寸相同且為CV_8U 類型。
(注:dst輸出二值化之后的圖像)
# 1、獲取滑動條反饋值
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、設置閾值(inRange:在閾值(min,max)之內(nèi),設置為白色;在閾值之外,設置為黑色)
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()
圖像的與運算主要用于獲取某個圖像中感興趣的部分,是針對兩個圖像矩陣數(shù)組或一個數(shù)組與標量的按位與。
# 3、獲取感興趣二值(與運算)
interest = cv2.bitwise_and(h_thresh, cv2.bitwise_and(s_thresh, v_thresh))

總代碼
# HSV顏色空間與滑動條(*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、獲取滑動條反饋值
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、設置閾值(inRange:在閾值(min,max)之內(nèi),設置為白色;在閾值之外,設置為黑色)
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、獲取感興趣二值(與運算)
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滾動條
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)
參考資料
短動畫慢語速1分鐘講清影視調(diào)色中色彩形成原理基礎——RGB與HSV_嗶哩嗶哩_bilibili
Python編程中*args與**kwargs區(qū)別作用詳解
以上就是OpenCV基礎HSV顏色空間*args與**args滑動條傳參問題的詳細內(nèi)容,更多關于HSV顏色空間*args與**args滑動條傳參的資料請關注腳本之家其它相關文章!
相關文章
Python 操作SQLite數(shù)據(jù)庫的示例
這篇文章主要介紹了Python 操作SQLite數(shù)據(jù)庫的示例,幫助大家更好的利用python操作數(shù)據(jù)庫處理數(shù)據(jù),感興趣的朋友可以了解下2020-10-10
python爬蟲框架scrapy實現(xiàn)模擬登錄操作示例
這篇文章主要介紹了python爬蟲框架scrapy實現(xiàn)模擬登錄操作,結合實例形式分析了scrapy框架實現(xiàn)模擬登陸操作的步驟、相關實現(xiàn)技巧與注意事項,需要的朋友可以參考下2018-08-08
使用python進行PostgreSQL數(shù)據(jù)庫連接全過程
這篇文章主要介紹了使用python進行PostgreSQL數(shù)據(jù)庫連接的相關資料,包括安裝psycopg2模塊、使用PyCharm進行圖形化連接、代碼連接數(shù)據(jù)庫的方法、以及如何執(zhí)行DML和DQL操作,需要的朋友可以參考下2025-03-03

