關(guān)于利用OpenCV進(jìn)行顏色分類,本文包含了HSV介紹及應(yīng)用、cv2.inRange及應(yīng)用、RGB與HSV通道的區(qū)別三個方面。
01 HSV介紹
HSV是相對RGB的另一種顏色表示方式,它相對RGB而言,是一種比較直觀的顏色模型。其中顏色的參數(shù)分別是:色調(diào)(H),飽和度(S),明度(V)。
色調(diào)H:
用角度度量,取值范圍0°~360°,從紅色開始按逆時針方向計(jì)算,紅色為0°,綠色為120°,藍(lán)色為240°。它們的補(bǔ)色是:黃色為60°,青色為180°,紫色為300°;
飽和度S:
飽和度S表示顏色接近光譜色的程度。一種顏色,可以看成是某種光譜色與白色混合的結(jié)合。其中光譜色所占的比例愈大,顏色接近光譜色的程度就愈高,顏色的飽和度也就愈高。飽和度高,顏色則深而艷。光譜色的白光成分為0,飽和度達(dá)到最高。通常取值范圍為0%~100%,值越大,顏色越飽和。
明度V:
明度表示顏色明亮的程度,對于光源色,明度值與發(fā)光體的光亮度有關(guān);對于物體色,此值和物體的透射比或反射比有關(guān),光照對此值影響最大。通常取值范圍為0%(黑)到100%(白)。
代碼:
OpenCV中由BGR轉(zhuǎn)為HSV方法:注意:OpenCV讀取的圖片格式為BGR格式,非RGB格式。
原圖:
處理后:
02 利用cv2.inRange進(jìn)行二值化處理
cv2.inRange介紹
此函數(shù)可實(shí)現(xiàn)圖像的二值化處理功能,這點(diǎn)類似之前提到過的threshold()函數(shù),但是threshold()函數(shù)只能對單一通道進(jìn)行二值化處理,而inRange()可以對多個通道進(jìn)行操作。使用inRange處理之前,需要確定好兩個數(shù)組,即圖像上限和圖像下限。
img=cv2.inRange(hsv,lower,upper)
第一個參數(shù):hsv指的是原圖
第二個參數(shù):lower指的是圖像中低于這個lower的值,圖像值變?yōu)?
第三個參數(shù):upper指的是圖像中高于這個upper的值,圖像值變?yōu)?
注意:如果傳入的圖像是彩色的,即三維數(shù)組圖像,則lower與upper里面分別有三個元素,并且二者必須都是數(shù)組類型。
(lower, upper)兩個數(shù)組參數(shù)可以作為一個范圍,如果圖像的像素點(diǎn)在這個范圍之內(nèi),像素點(diǎn)就變成255(即白色),如果圖像的像素點(diǎn)在這個范圍之外,像素點(diǎn)就變?yōu)?(即黑色)。
處理完成之后,圖像變?yōu)槎祱D像,想要的圖像顏色變?yōu)榘咨?,其他顏色變?yōu)楹谏?,之后可以專門針對白色進(jìn)行處理。
代碼示例
提取該圖水杯部分(即黑色部分):
處理后:
由于貓耳朵與后面角落有部分黑色,并且杯子本身黑色不純(存在白點(diǎn)),會產(chǎn)生噪點(diǎn),需要后續(xù)進(jìn)行處理,消去噪音點(diǎn)。
03 RGB通道與HSV通道在顏色檢測中的區(qū)別
如果光源不穩(wěn)定,光照變化較大(存在陰影或者亮斑),則利用HSV通道檢測就比RGB檢測高效得多。光照變化較大時,對RGB三個色道的參數(shù)影響都很大,在實(shí)際調(diào)參過程中會顯得非常麻煩,而且效果不理想。
HSV中,由于H是顏色的色調(diào),基本不受光照影響(即不受陰影或者亮斑影響),而V(明度)主要體現(xiàn)了顏色明亮程度,可以主要調(diào)試V來應(yīng)對光源的變化,并且調(diào)試效果比RGB色道要可靠。
審核編輯:湯梓紅
-
RGB
+關(guān)注
關(guān)注
4文章
807瀏覽量
59965 -
OpenCV
+關(guān)注
關(guān)注
32文章
642瀏覽量
42937 -
顏色檢測
+關(guān)注
關(guān)注
0文章
9瀏覽量
944 -
HSV
+關(guān)注
關(guān)注
0文章
10瀏覽量
2735
原文標(biāo)題:基礎(chǔ)丨利用OpenCV進(jìn)行顏色檢測
文章出處:【微信號:gh_c87a2bc99401,微信公眾號:INDEMIND】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
在全志H616核桃派上實(shí)現(xiàn)USB攝像頭的OpenCV顏色檢測
基于openCV的人臉檢測系統(tǒng)的設(shè)計(jì)
如何使用Python中的OpenCV模塊檢測顏色
Android系統(tǒng)下OpenCV的人臉檢測模塊的設(shè)計(jì)

使用Adaboost算法實(shí)現(xiàn)車牌檢測在OpenCV上實(shí)現(xiàn)的研究分析

圖像處理的顏色空間及其OpenCV實(shí)現(xiàn)
圖像的顏色空間及其OpenCV實(shí)現(xiàn)

利用OpenCV構(gòu)建一個RaspberryPi運(yùn)動檢測系統(tǒng)

如何使用Python OpenCV進(jìn)行面部標(biāo)志檢測

使用opencv和python進(jìn)行智能火災(zāi)檢測

使用TCS3200/230進(jìn)行顏色檢測

利用opencv+openpose實(shí)現(xiàn)人體姿態(tài)檢測

Python OpenCV教程:特定顏色的檢測
如何利用OpenCV進(jìn)行顏色分類 rgb和hsv的區(qū)別

在核桃派上實(shí)現(xiàn)USB攝像頭的OpenCV顏色檢測

評論