欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?OpenCV基于HSV的顏色分割實(shí)現(xiàn)示例

 更新時(shí)間:2022年06月07日 11:31:29   作者:胖大海pyh  
這篇文章主要為大家介紹了Python?OpenCV基于HSV的顏色分割實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

一周沒(méi)有更新博客了,這一周的時(shí)間內(nèi)加強(qiáng)了對(duì)機(jī)器學(xué)習(xí)和圖像處理的學(xué)習(xí)。學(xué)的有點(diǎn)混亂,有必要記錄一下。

深度學(xué)習(xí)可以解決很多問(wèn)題,但有時(shí)候深度學(xué)習(xí)和圖像處理相結(jié)合才能有更好的效果:比如,在進(jìn)行交通信號(hào)燈檢測(cè)時(shí),用目標(biāo)檢測(cè)模型確定信號(hào)燈位置后,對(duì)信號(hào)燈進(jìn)行顏色分割再識(shí)別可大大提高準(zhǔn)確率。

機(jī)器學(xué)習(xí)領(lǐng)域中有句話:數(shù)據(jù)和特征決定了模型的上限,而算法只不過(guò)是逼近這個(gè)上限而已,所以了解機(jī)器學(xué)習(xí)的常用算法,熟悉機(jī)器學(xué)習(xí)中的特征工程是很有必要的。

1、什么是HSV

我們知道RGB顏色模式,通過(guò)不同的配比可以形成不同的顏色。HSV也是一種顏色模式,其模型如圖所示

通過(guò)圖示我們也能夠看到,他和RGB顏色模型相似,也是由三個(gè)屬性決定顏色,H、S、V分別是色彩、深度、明暗,按著圖中方向的變化,其對(duì)應(yīng)的顏色也會(huì)改變,三者也同樣是有取值范圍的:

  • H(色調(diào)):用角度度量,取值范圍為0°~360°
  • S(飽和度):表示顏色接近光譜色的程度。通常取值范圍為0%~100%,值越大,顏色越飽和。
  • V(明度):表示顏色明亮的程度,對(duì)于光源色,明度值與發(fā)光體的光亮度有關(guān);對(duì)于物體色,此值和物體的透射比或反射比有關(guān)。通常取值范圍為0%(黑)到100%(白)。

HSV空間中三個(gè)指標(biāo)相互獨(dú)立,能夠非常直觀的表達(dá)色彩的明暗,色調(diào),以及鮮艷程度,方便進(jìn)行顏色之間的對(duì)比,所以經(jīng)常在HSV中進(jìn)行顏色的分割識(shí)別。在HSV中各個(gè)顏色的范圍見(jiàn)下表

2、代碼實(shí)戰(zhàn)

從網(wǎng)上下載了一張交通信號(hào)燈的圖片,如圖

我們的目的是進(jìn)行顏色分割,將我們感興趣的區(qū)域提取出來(lái)以方便下一步的操作。

2.1 createTrackbar使用方法及步驟

在開(kāi)始實(shí)際操作之前,來(lái)了解一下createTrackbar。createTrackbar是Opencv中的API,其可在顯示圖像的窗口中快速創(chuàng)建一個(gè)滑動(dòng)控件,用于手動(dòng)調(diào)節(jié)閾值,具有非常直觀的效果??梢灾苯佑^察閾值選擇的效果,并確定想要的閾值。

使用Trackbar我們要了解兩個(gè)函數(shù);

(1)創(chuàng)建滑動(dòng)條函數(shù) 

一個(gè)滑動(dòng)條只能用于一個(gè)參數(shù),如果需要改變多個(gè)參數(shù),可以使用多個(gè)滑動(dòng)條。

cv2.createTrackbar(trackbarName, windowName, value, count, onChange)

各參數(shù)意義: 

trackbarName:滑動(dòng)空間的名稱; 

windowName:滑動(dòng)空間用于依附的圖像窗口的名稱; 

value:初始化閾值; 

count:滑動(dòng)控件的刻度范圍;最小值默認(rèn)為0。 

onChange:回調(diào)函數(shù)(所謂回調(diào)函數(shù)即每次修改滑動(dòng)條后,需要傳入新變量的函數(shù))的名稱,其定義如下:

onchange:void foo(int,void*)。

其中第一個(gè)參數(shù)是滑動(dòng)條位置,第二個(gè)參數(shù)是用戶數(shù)據(jù)(請(qǐng)參見(jiàn)下一個(gè)參數(shù))。如果回調(diào)是空指針,則不調(diào)用回調(diào),但只更新值

用戶數(shù)據(jù):按原樣傳遞給回調(diào)的用戶數(shù)據(jù)。它可以用來(lái)處理滑動(dòng)條事件而不使用全局變量。

(2)獲取滑動(dòng)條的值函數(shù)

cv.getTrackbarPos獲取滑動(dòng)條位置處的值

g = cv2.getTrackbarPos(trackbarName2, windowName)
#第一個(gè)參數(shù)為滑動(dòng)條1的名稱,第二個(gè)參數(shù)為窗口的名稱。

注意:需要在回調(diào)函數(shù)內(nèi)部采用函數(shù)cv.getTrackbarPos獲取滑動(dòng)條位置處的值,不然如果存在多個(gè)滑動(dòng)條時(shí),函數(shù)無(wú)法獲取更新后的參數(shù)值。

2.2 代碼詳解

import cv2
# 滑動(dòng)條的回調(diào)函數(shù),獲取滑動(dòng)條位置處的值
def empty(a):
    h_min = cv2.getTrackbarPos("Hue Min","TrackBars")
    h_max = cv2.getTrackbarPos("Hue Max", "TrackBars")
    s_min = cv2.getTrackbarPos("Sat Min", "TrackBars")
    s_max = cv2.getTrackbarPos("Sat Max", "TrackBars")
    v_min = cv2.getTrackbarPos("Val Min", "TrackBars")
    v_max = cv2.getTrackbarPos("Val Max", "TrackBars")
    print(h_min, h_max, s_min, s_max, v_min, v_max)
    return h_min, h_max, s_min, s_max, v_min, v_max
path = 'Resources/11.jpg'
# 創(chuàng)建一個(gè)窗口,放置6個(gè)滑動(dòng)條
cv2.namedWindow("TrackBars")
cv2.resizeWindow("TrackBars",640,240)
cv2.createTrackbar("Hue Min","TrackBars",0,179,empty)
cv2.createTrackbar("Hue Max","TrackBars",19,179,empty)
cv2.createTrackbar("Sat Min","TrackBars",110,255,empty)
cv2.createTrackbar("Sat Max","TrackBars",240,255,empty)
cv2.createTrackbar("Val Min","TrackBars",153,255,empty)
cv2.createTrackbar("Val Max","TrackBars",255,255,empty)
while True:
    img = cv2.imread(path)
    imgHSV = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
    # 調(diào)用回調(diào)函數(shù),獲取滑動(dòng)條的值
    h_min,h_max,s_min,s_max,v_min,v_max = empty(0)
    lower = np.array([h_min,s_min,v_min])
    upper = np.array([h_max,s_max,v_max])
    # 獲得指定顏色范圍內(nèi)的掩碼
    mask = cv2.inRange(imgHSV,lower,upper)
    # 對(duì)原圖圖像進(jìn)行按位與的操作,掩碼區(qū)域保留
    imgResult = cv2.bitwise_and(img,img,mask=mask)
    cv2.imshow("Mask", mask)
    cv2.imshow("Result", imgResult)
    cv2.waitKey(1)

其實(shí)在交通信號(hào)燈檢測(cè)中,我們只需要獲得掩碼(mask圖像)就可以進(jìn)行識(shí)別了。

3、總結(jié)

顏色分割在很多場(chǎng)景都可以用到,結(jié)合深度學(xué)習(xí)會(huì)有更好的效果。后續(xù)將記錄如何進(jìn)行字符分割。字符分割的應(yīng)用場(chǎng)景和思路應(yīng)用同樣廣泛,更多關(guān)于Python OpenCV HSV顏色分割的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python個(gè)人博客程序開(kāi)發(fā)實(shí)例用戶驗(yàn)證功能

    Python個(gè)人博客程序開(kāi)發(fā)實(shí)例用戶驗(yàn)證功能

    這篇文章主要介紹了怎樣用Python來(lái)實(shí)現(xiàn)一個(gè)完整的個(gè)人博客系統(tǒng),我們通過(guò)實(shí)操上手的方式可以高效的鞏固所學(xué)的基礎(chǔ)知識(shí),感興趣的朋友一起來(lái)看看吧
    2022-12-12
  • Python生成不重復(fù)隨機(jī)值的方法

    Python生成不重復(fù)隨機(jī)值的方法

    這篇文章主要介紹了Python生成不重復(fù)隨機(jī)值的方法,實(shí)例分析了Python算法實(shí)現(xiàn)與Python自帶方法的實(shí)現(xiàn)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-05-05
  • Python3.9最新版下載與安裝圖文教程詳解(Windows系統(tǒng)為例)

    Python3.9最新版下載與安裝圖文教程詳解(Windows系統(tǒng)為例)

    這篇文章主要介紹了Python3.9最新版下載與安裝圖文教程詳解,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 基于OpenCV python3實(shí)現(xiàn)證件照換背景的方法

    基于OpenCV python3實(shí)現(xiàn)證件照換背景的方法

    這篇文章主要介紹了基于OpenCV python3實(shí)現(xiàn)證件照換背景的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 編寫Python的web框架中的Model的教程

    編寫Python的web框架中的Model的教程

    這篇文章主要介紹了編寫Python的web框架中的Model的教程,示例代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • python禁用鍵鼠與提權(quán)代碼實(shí)例

    python禁用鍵鼠與提權(quán)代碼實(shí)例

    這篇文章主要介紹了python禁用鍵鼠與提權(quán)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • python實(shí)現(xiàn)批量修改文件名代碼

    python實(shí)現(xiàn)批量修改文件名代碼

    本文給大家分享的是一段僅僅10行代碼就實(shí)現(xiàn)了批量修改文件名的python腳本,推薦給大家,有需要的小伙伴可以參考下
    2017-09-09
  • 淺談spring boot 集成 log4j 解決與logback沖突的問(wèn)題

    淺談spring boot 集成 log4j 解決與logback沖突的問(wèn)題

    今天小編就為大家分享一篇淺談spring boot 集成 log4j 解決與logback沖突的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python實(shí)戰(zhàn)使用Selenium爬取網(wǎng)頁(yè)數(shù)據(jù)

    Python實(shí)戰(zhàn)使用Selenium爬取網(wǎng)頁(yè)數(shù)據(jù)

    這篇文章主要為大家介紹了Python實(shí)戰(zhàn)使用Selenium爬取網(wǎng)頁(yè)數(shù)據(jù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2023-05-05
  • python 基于空間相似度的K-means軌跡聚類的實(shí)現(xiàn)

    python 基于空間相似度的K-means軌跡聚類的實(shí)現(xiàn)

    這篇文章主要介紹了python 基于空間相似度的K-means軌跡聚類的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評(píng)論