<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          OpenCV系列(六)HSV顏色提取

          共 2588字,需瀏覽 6分鐘

           ·

          2021-01-26 17:14

          HSV是一種在人們生活中甚至更常用的顏色系統(tǒng),在電視遙控器上、在畫畫的調(diào)色板中、在你用愛某藝視頻調(diào)整亮度時都很常見,因為它更符合人們描述顏色的方式——是什么顏色、顏色有多深、顏色有多亮。


          hsv

          • H—Hue即色相,就是我們平時所說的紅、綠,如果你分的更細的話可能還會有洋紅、草綠等等;在HSV模型中,用度數(shù)來描述色相,其中紅色對應(yīng)0度,綠色對應(yīng)120度,藍色對應(yīng)240度。

          • S—Saturation即飽和度,色彩的深淺度(0-100%)?,對于一種顏色比如紅色,我們可以用淺紅——大紅——深紅——紅得發(fā)紫等等語言來描述它(請原諒一個純理科生的匱乏的顏色系統(tǒng)),對應(yīng)在畫水彩的時候即一種顏料加上不同分量的水形成不同的飽和度。

          • V—Value即色調(diào),純度,色彩的亮度(0-100%)?,這個在調(diào)整屏幕亮度的時候比較常見。



          相比我們之前接觸過的RGB 顏色空間,它利用三個顏色分量的線性組合來表示顏色,任何顏色都與這三個分量有關(guān),而且這三個分量是高度相關(guān)的,所以連續(xù)變換顏色時并不直觀,想對圖像的顏色進行調(diào)整需要更改這三個分量才行。



          自然環(huán)境下獲取的圖像容易受自然光照、遮擋和陰影等情況的影響,即對亮度比較敏感。而?RGB?顏色空間的三個分量都與亮度密切相關(guān),即只要亮度改變,三個分量都會隨之相應(yīng)地改變,而沒有一種更直觀的方式來表達。


          RGB顏色空間不同的是它比 RGB 更接近人們對彩色的感知經(jīng)驗。非常直觀地表達顏色的色調(diào)、鮮艷程度和明暗程度,方便進行顏色的對比。

          HSV 顏色空間下,比 BGR 更容易跟蹤某種顏色的物體,常用于分割指定顏色的物體。

          ?

          調(diào)色板


          接下來,我們分別實現(xiàn)一個調(diào)色板和一個HSV顏色提取的程序。

          import cv2import numpy as np
          # 創(chuàng)建一個 300*512*3 的圖片img=np.zeros((300,512,3),np.uint8)cv2.namedWindow('image')# 滑動條回調(diào)函數(shù)def pr(x): print(x)# 創(chuàng)建3個滑動條 分別控制BGR三個顏色cv2.createTrackbar('B','image',0,255,pr)cv2.createTrackbar('G','image',0,255,pr)cv2.createTrackbar('R','image',0,255,pr)
          while True: cv2.imshow('image',img) k=cv2.waitKey(1) if k==ord('q'): break # 獲取滑動條的值 b=cv2.getTrackbarPos('B','image') g=cv2.getTrackbarPos('G','image') r=cv2.getTrackbarPos('R','image') # 將值填充進初始圖片中 img[:]=[b,g,r]cv2.destroyAllWindows()

          程序的運行結(jié)果如下(可以拖動滑動條改變顏色):

          函數(shù)解析:cv2.createTrackbar('B','image',0,255,pr)

          作用:創(chuàng)建一個滑動條

          b
          滑動條名稱
          image
          滑動條被放置的窗口的名字
          0
          滑動條默認值
          255
          滑動條最大值
          pr
          滑動條的回調(diào)函數(shù)



          顏色提取

          接下來,我們以同樣的方式定義進度條,分別代表hsv最低值 和hsv最高值,然后通過這個區(qū)間,取得我們需要的顏色。

          import cv2import numpy as np
          # 滑動條回調(diào)函數(shù)def pr(x): print(x)cv2.namedWindow('hsv')
          cv2.createTrackbar('LH','hsv',0,255,pr)cv2.createTrackbar('LS','hsv',0,255,pr)cv2.createTrackbar('LV','hsv',0,255,pr)cv2.createTrackbar('UH','hsv',255,255,pr)cv2.createTrackbar('US','hsv',255,255,pr)cv2.createTrackbar('UV','hsv',255,255,pr)

          while True: image=cv2.imread('opencv_image/smarties.png') hsv=cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
          lh=cv2.getTrackbarPos('LH','hsv') ls=cv2.getTrackbarPos('LS','hsv') lv=cv2.getTrackbarPos('LV','hsv')
          uh=cv2.getTrackbarPos('UH','hsv') us=cv2.getTrackbarPos('US','hsv') uv=cv2.getTrackbarPos('UV','hsv')
          l_b=np.array([lh,ls,lv]) u_b=np.array([uh,us,uv])
          masks=cv2.inRange(hsv,l_b,u_b) res=cv2.bitwise_and(image,image,mask=masks)
          cv2.imshow('image',image) cv2.imshow('res',res) cv2.waitKey(1)
          cv2.destroyAllWindows()

          程序運行的結(jié)果如下(滑動進度條,提取不同顏色的小球):


          函數(shù)解析:maks=cv2.inRange(hsv,l_b,u_b)

          作用:提取mask

          hsv
          轉(zhuǎn)換成hsv顏色空間的圖片
          l_b
          低于這個值,圖像值為0
          u_b
          高于這個值 ,圖像值為0


          掃二維碼|關(guān)注我們

          微信號|深度學習從入門到放棄

          長按關(guān)注|永不迷路


          瀏覽 289
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人黄色做爱视频 | 好吊妞视频在线观看 | www.人人操 | 青青国产操逼视频 | 操逼的兔费的无码视频 |