您好,登錄后才能下訂單哦!
如何進行OpenCV中HSV顏色空間的分析,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
前言
HSV是一種在人們生活中甚至更常用的顏色系統,在電視遙控器上、在畫畫的調色板中、在你用愛某藝視頻調整亮度時都很常見,因為它更符合人們描述顏色的方式——是什么顏色、顏色有多深、顏色有多亮。
H——Hue即色相,就是我們平時所說的紅、綠,如果你分的更細的話可能還會有洋紅、草綠等等;在HSV模型中,用度數來描述色相,其中紅色對應0度,綠色對應120度,藍色對應240度。
HSV值對顏色的影響
如上圖是H=120時的S—V平面,S和V值分別從左至右、從下至上由0增大至1。我們可以發現其規律:
在圖片的左側S值為0,呈現不同程度的灰色,由V值決定。
在圖片的下側V值為0,呈現出黑色。
在圖片的右上角S和V值都為1,呈現出純色,其RGB值為(0, 255, 0)。
因此對HSV我們的結論如下:
當S=1 V=1時,H所代表的任何顏色被稱為純色;
當S=0時,即飽和度為0,顏色最淺,最淺被描述為灰色(灰色也有亮度,黑色和白色也屬于灰色),灰色的亮度由V決定,此時H無意義;
當V=0時,顏色最暗,最暗被描述為黑色,因此此時H(無論什么顏色最暗都為黑色)和S(無論什么深淺的顏色最暗都為黑色)均無意義。
HSV和RGB的互相轉化
RGB?HSV
1. V = max(R, G, B)/255.0f——亮度V就是RGB值中最大的那個值進行歸一化。
推論:
純色的RGB中肯定有一個是255。同時RGB值也不可能有3個255,因為3個255為白色,白色為對于任何色彩H,V=1而S=0時的產物。而V=1 S=0并不是純色。同時如果V=0,那么RGB三者中的最大值是0,即GRB都為0,也就是說該像素是黑色。
2. S = (max(R, G, B) - min(R, G, B))/(float)max(R, G, B)——飽和度S是RGB中最大值和最小值的差值與最大值的比值。
推論:
純色(S=1 V=1)的RGB值中必定有一個0,因為當S=1,max(R, G, B) - min(R, G, B) == max(R, G, B),即RGBMin=0。這也說明了白色(RGB(255,255,255)并不是純色)。
當S=0時,RGBMax-RGBMin==0,即R==G==B,此時顏色呈不同程度的灰色(由白到黑,亮度由V而定,因為V=RGBMax*100/255,V越高,RGBMax==R==G==B就越高,灰色越亮))。這也可以從上面給出的矩形圖看出。
因此對于純色來說,RGB中必有一個255和一個0。
公式換算:
HSV?RGB
OpenCV中的HSV顏色體系
看完上述內容,你們掌握如何進行OpenCV中HSV顏色空間的分析的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。