日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

OpenCV(基础补充)颜色空间HSV *args与**args(滑动条传参问题)

發(fā)布時(shí)間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV(基础补充)颜色空间HSV *args与**args(滑动条传参问题) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

一、基礎(chǔ)理論

1、Hue(色相)

2、Value(明度)

3、Saturation(飽和度)

二、hsv三通道及單通道效果

三、*args && **args

*args:

**args:

?四、滾動(dòng)條控制h、s、v(min && max)

1、創(chuàng)建滾動(dòng)條

?API

2、回調(diào)函數(shù) -- 閾值設(shè)置

API

inRange()

3、回調(diào)函數(shù) -- 感興趣值

?API

bitwise_and()

總代碼

參考資料


一、基礎(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)畫慢語(yǔ)速1分鐘講清影視調(diào)色中色彩形成原理基礎(chǔ)——RGB與HSV

二、hsv三通道及單通道效果

三、*args && **args

*args:

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

**args:

**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 imgimg = cv2.imread('Resource/test.jpg')cv2.imshow('img', img)# 顯示h、s、vShow_HSV()cv2.waitKey(0)

參考資料

短動(dòng)畫慢語(yǔ)速1分鐘講清影視調(diào)色中色彩形成原理基礎(chǔ)——RGB與HSV_嗶哩嗶哩_bilibili

??????Python中*args、**args到底是什么、有啥區(qū)別、怎么用_qq_1170407931的博客-CSDN博客_argscreateTrackbar使用方法及步驟_mysee1989的專欄-CSDN博客

總結(jié)

以上是生活随笔為你收集整理的OpenCV(基础补充)颜色空间HSV *args与**args(滑动条传参问题)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。