最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

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

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

1、什么是HSV

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

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

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

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

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

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

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

2.1 createTrackbar使用方法及步驟

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

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

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

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

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

各參數(shù)意義: 

trackbarName:滑動空間的名稱; 

windowName:滑動空間用于依附的圖像窗口的名稱; 

value:初始化閾值; 

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

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

onchange:void foo(int,void*)。

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

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

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

cv.getTrackbarPos獲取滑動條位置處的值

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

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

2.2 代碼詳解

import cv2
# 滑動條的回調(diào)函數(shù),獲取滑動條位置處的值
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)建一個窗口,放置6個滑動條
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ù),獲取滑動條的值
    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)
    # 對原圖圖像進(jìn)行按位與的操作,掩碼區(qū)域保留
    imgResult = cv2.bitwise_and(img,img,mask=mask)
    cv2.imshow("Mask", mask)
    cv2.imshow("Result", imgResult)
    cv2.waitKey(1)

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

3、總結(jié)

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

相關(guān)文章

  • Pandas中datetime數(shù)據(jù)類型的使用

    Pandas中datetime數(shù)據(jù)類型的使用

    本文主要介紹了Pandas中datetime數(shù)據(jù)類型的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • django框架中間件原理與用法詳解

    django框架中間件原理與用法詳解

    這篇文章主要介紹了django框架中間件原理與用法,結(jié)合實(shí)例形式詳細(xì)分析了Django框架常用中間件與基本使用技巧,需要的朋友可以參考下
    2019-12-12
  • python抽取指定url頁面的title方法

    python抽取指定url頁面的title方法

    今天小編就為大家分享一篇python抽取指定url頁面的title方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python寫的Discuz7.2版faq.php注入漏洞工具

    Python寫的Discuz7.2版faq.php注入漏洞工具

    這篇文章主要介紹了Python寫的Discuz7.2版faq.php注入漏洞工具,全自動的一款注入工具,針對Discuz7.2版,需要的朋友可以參考下
    2014-08-08
  • python中使用多線程改進(jìn)flask案例

    python中使用多線程改進(jìn)flask案例

    這篇文章主要介紹了使用多線程改進(jìn)flask案例,線程是指進(jìn)程內(nèi)的一個執(zhí)行單元,也是進(jìn)程內(nèi)的可調(diào)度實(shí)體.線程的劃分尺度小于進(jìn)程,使得多線程程序的并發(fā)性高,更多具體內(nèi)容,需要的小伙伴可以參考下面文章相關(guān)資料,希望對你有所幫助
    2022-03-03
  • 在Tensorflow中實(shí)現(xiàn)梯度下降法更新參數(shù)值

    在Tensorflow中實(shí)現(xiàn)梯度下降法更新參數(shù)值

    今天小編就為大家分享一篇在Tensorflow中實(shí)現(xiàn)梯度下降法更新參數(shù)值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 使用Python和Selenium構(gòu)建一個自動化圖像引擎

    使用Python和Selenium構(gòu)建一個自動化圖像引擎

    這篇文章主要為大家詳細(xì)介紹了如何使用Python和Selenium庫構(gòu)建一個自動化圖像引擎,能夠根據(jù)指定參數(shù)自動截取網(wǎng)頁快照,并將生成的圖片存儲到云端,需要的可以參考下
    2024-12-12
  • python list 切片倒著取的實(shí)現(xiàn)示例

    python list 切片倒著取的實(shí)現(xiàn)示例

    切片操作非常靈活,可以按照需要獲取列表中的任意一段元素,本文主要介紹了python list 切片倒著取的實(shí)現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • Python 實(shí)現(xiàn)兩個列表里元素對應(yīng)相乘的方法

    Python 實(shí)現(xiàn)兩個列表里元素對應(yīng)相乘的方法

    今天小編就為大家分享一篇Python 實(shí)現(xiàn)兩個列表里元素對應(yīng)相乘的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python遺傳算法之geatpy的深入理解

    python遺傳算法之geatpy的深入理解

    本文主要介紹了python遺傳算法之geatpy的深入理解,主要從geatpy中的各種數(shù)據(jù)結(jié)構(gòu)一步一步進(jìn)行學(xué)習(xí),具有一定的參考價值,感興趣的可以了解一下
    2022-04-04

最新評論

都兰县| 洪洞县| 界首市| 淄博市| 宜兴市| 石嘴山市| 鹤庆县| 肥城市| 泽普县| 临猗县| 林口县| 福州市| 英山县| 增城市| 稻城县| 宣汉县| 霞浦县| 松潘县| 文山县| 永泰县| 新源县| 北碚区| 商洛市| 扎鲁特旗| 辉南县| 镇康县| 富源县| 金山区| 达州市| 民县| 时尚| 定州市| 腾冲县| 镇巴县| 江城| 老河口市| 耒阳市| 长子县| 禹州市| 红原县| 宜丰县|