opencv筆記5 通過HSV進行顏色分離

2021-06-18 14:15:10 字數 1630 閱讀 9364

通常是以rgb格式儲存,難以分離出顏色,可以轉換到hsv空間進行顏色分離。

**自wiki)

hslhsv(也叫hsb)是對rgb 色彩空間中點的兩種有關係的表示,它們嘗試描述比 rgb 更準確的感知顏色聯絡,並仍保持在計算上簡單。

h指hue(色相)、s指saturation(飽和度)、l指lightness(亮度)、v指value(色調)、b指brightness(明度)。

hsl 和 hsv 二者都把顏色描述在圓柱座標系內的點,這個圓柱的中心軸取值為自底部的黑色到頂部的白色而在它們中間是的灰色,繞這個軸的角度對應於「色相」,到這個軸的距離對應於「飽和度」,而沿著這個軸的高度對應於「亮度」,「色調」或「明度」。

這兩種表示在用目的上類似,但在方法上有區別。二者在數學上都是圓柱,但 hsv(色相,飽和度,色調)在概念上可以被認為是顏色的倒圓錐體(黑點在下頂點,白色在上底面圓心),hsl 在概念上表示了乙個雙圓錐體和圓球體(白色在上頂點,黑色在下頂點,最大橫切面的圓心是半程灰色)。注意儘管在 hsl 和 hsv 中「色相」指稱相同的性質,它們的「飽和度」的定義是明顯不同的。

因為 hsl 和 hsv 是裝置依賴的 rgb 的簡單變換,(h, s, l) 或 (h, s, v) 三元組定義的顏色依賴於所使用的特定紅色、綠色和藍色「加法原色」。每個獨特的 rgb 裝置都伴隨著乙個獨特的 hsl 和 hsv 空間。但是 (h, s, l) 或 (h, s, v) 三元組在被約束於特定 rgb 空間比如 srgb 的時候就變成明確的了。

詳見wiki百科:

般對顏色空間的影象進行有效處理都是在hsv空間進行的,然後對於基本色中對應的hsv分量需要給定乙個嚴格的範圍,下面是通過實驗計算的模糊範圍(準確的範圍在網上都沒有給出)。

h:  0— 180

s:  0— 255

v:  0— 255

此處把部分紅色歸為紫色範圍:黑灰

白紅橙黃

綠青藍紫

hmin

hmax

34;smin

43smax

255vmin

46vmax

255

#include "stdafx.h"

#include #include #include #include using namespace cv;

void sortcorners(std::vector& corners,cv::point2f center)

int main(int argc, char* argv)

drawcontours(outlineimage, contours,

-1,//draw all contours

cv_rgb(0,255,255),//in black

1); //with a thickness of 2

//計算每條輪廓的中心(圓心)

vectorcorners;

if(contours.size() != 4)

十通過FactoryBean對Bean進行配置

spring 中有兩種型別的 bean,一種是普通bean,另一種是工廠bean,即factorybean.工廠 bean 跟普通bean不同,其返回的物件不是指定類的乙個例項,其返回的是該工廠 bean 的 getobject 方法所返回的物件 ex 首先建立乙個類實現factorybean 這個...

html5通過canvas實現刮刮卡效果示例分享

修改img.src時塗層也會自動適應新的尺寸.修改layer函式可更改塗層樣式 以下是html源 已增加移動裝置支援 複製 如下 需要判斷是否刮完時用這段 替換原 的eventup事件處理函式 複製 如下 e.preventdefault mousedown false var data ctx.g...

android傳遞資料方式5 通過靜態變數

使用intent是在不同的activity中傳資料是推薦的方法,但是這個方法不能傳遞不可序列化的資料,因此我們可以使用靜態變數的方法實現不同的activity的資料通訊。1.在otheractivity中宣告兩個靜態變數name和age public static string name publi...