中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • 如何理解OpenCV基礎HSV顏色空間*args與**kwargs滑動條傳參問題

如何理解OpenCV基礎HSV顏色空間*args與**kwargs滑動條傳參問題

發布時間:2021-10-18 09:23:25 來源:億速云 閱讀:154 作者:柒染 欄目:開發技術

今天就跟大家聊聊有關如何理解OpenCV基礎HSV顏色空間*args與**kwargs滑動條傳參問題,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

    一、基礎理論

    HSV:HSV是一種為了加快調色效率,且易于理解的概念。

    Hue:色相(具體的顏色)

    Saturation:飽和度、色彩純凈度

    Value:明度

    1、Hue(色相)

    Hue:色相(具體的顏色)

    如何理解OpenCV基礎HSV顏色空間*args與**kwargs滑動條傳參問題

    2、Value(明度)

    明度:色彩的明亮程度,單通道亮度(并不等同于整體發光量)。

    (明度越高越白,越低越黑,一般提高明度會同時提高R、G、B三通道的數值)

    3、Saturation(飽和度)

    Saturation:飽和度、色彩純度。(越低越灰,越高越純)

    (一般調高飽和度會降低RGB中相對較低的數值,凸顯主要顏色的純度。 )

    如何理解OpenCV基礎HSV顏色空間*args與**kwargs滑動條傳參問題

    B站視頻講解:

    短動畫慢語速1分鐘講清影視調色中色彩形成原理基礎——RGB與HSV

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

    如何理解OpenCV基礎HSV顏色空間*args與**kwargs滑動條傳參問題

    如何理解OpenCV基礎HSV顏色空間*args與**kwargs滑動條傳參問題

    如何理解OpenCV基礎HSV顏色空間*args與**kwargs滑動條傳參問題

    三、*args && **kwargs

    *args:傳入參數未知,且不需要知道參數名稱。

    如何理解OpenCV基礎HSV顏色空間*args與**kwargs滑動條傳參問題

    **args:傳入參數未知,但需要知道參數名稱。

    如何理解OpenCV基礎HSV顏色空間*args與**kwargs滑動條傳參問題

    四、滾動條控制h、s、v(min && max)

    1、創建滾動條

    API

    CV_EXPORTS int createTrackbar(const string& trackbarname, const string& winname,
                                  int* value, int count,
                                  TrackbarCallback onChange = 0,
                                  void* userdata = 0);

    形式參數一trackbarname:滑動空間的名稱;

    形式參數二winname:滑動空間用于依附的圖像窗口的名稱;

    形式參數三value:初始化閾值;

    形式參數四count:滑動控件的刻度范圍;

    形式參數五TrackbarCallback:是回調函數,其定義如下

    typedef void (CV_CDECL *TrackbarCallback)(int pos, void* userdata);
    # 3、創建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)

    如何理解OpenCV基礎HSV顏色空間*args與**kwargs滑動條傳參問題

    2、回調函數 -- 閾值設置

    API

    inRange()

    主要是將在兩個閾值內的像素值設置為白色(255),而不在閾值區間內的像素值設置為黑色(0),該功能類似于之間所講的雙閾值化操作。

    void inRange(InputArray src, InputArray lowerb,
                                  InputArray upperb, OutputArray dst);

    參數1:輸入要處理的圖像,可以為單通道或多通道。

    參數2:包含下邊界的數組或標量。

    參數3:包含上邊界數組或標量。

    參數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)之內,設置為白色;在閾值之外,設置為黑色)
        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))

    如何理解OpenCV基礎HSV顏色空間*args與**kwargs滑動條傳參問題

    3、回調函數 -- 感興趣值

    API

    bitwise_and()

    圖像的與運算主要用于獲取某個圖像中感興趣的部分,是針對兩個圖像矩陣數組或一個數組與標量的按位與。

    # 3、獲取感興趣二值(與運算)
        interest = cv2.bitwise_and(h_thresh, cv2.bitwise_and(s_thresh, v_thresh))

    如何理解OpenCV基礎HSV顏色空間*args與**kwargs滑動條傳參問題

    總代碼

    # HSV顏色空間與滑動條(*args && **args)
    import cv2
    import numpy as np
    # 回調函數
    # *args:傳入參數未知,且不需要知道參數名稱
    # **args:傳入參數未知,但需要知道參數名稱
    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)之內,設置為白色;在閾值之外,設置為黑色)
        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、創建窗口
        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、創建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)

    看完上述內容,你們對如何理解OpenCV基礎HSV顏色空間*args與**kwargs滑動條傳參問題有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    五原县| 青铜峡市| 清水县| 临武县| 清新县| 宁化县| 上栗县| 育儿| 会昌县| 安平县| 萨迦县| 克什克腾旗| 石屏县| 靖州| 浏阳市| 会泽县| 彰武县| 溧阳市| 资兴市| 岑溪市| 阜平县| 浙江省| 成安县| 朝阳区| 饶阳县| 阿克陶县| 滦南县| 同德县| 德江县| 平南县| 北安市| 崇文区| 屏山县| 承德市| 乌鲁木齐市| 刚察县| 四子王旗| 晋宁县| 常州市| 枝江市| 灵武市|