hsv做為基本的調色空間,有較多的使用場景,目前越來越多的iot產品也需要用的hsv到rgb的顏色空間轉換,其中不乏低成本的微控制器。低成本的微控制器沒有fpu,所以只能靠編譯器將浮點運算轉為模擬浮點。當然模擬浮點運算就需要cpu來算了,同時需要更大的**空間。恰巧mcu一般主頻低,ram、rom小。
所以原有的**需要簡化才能適用於這類平台。
為了脫敏,這裡使用網上能找到python**,來說明化簡方法。
來自網際網路
import math
defhsv2rgb
(h, s, v)
: h =
float
(h) s =
float
(s) v =
float
(v) h60 = h /
60.0
h60f = math.floor(h60)
hi =
int(h60f)%6
f = h60 - h60f
p = v *(1
- s)
q = v *(1
- f * s)
t = v *(1
-(1- f)
* s)
r, g, b =0,
0,0if hi ==
0: r, g, b = v, t, p
elif hi ==
1: r, g, b = q, v, p
elif hi ==
2: r, g, b = p, v, t
elif hi ==
3: r, g, b = p, q, v
elif hi ==
4: r, g, b = t, p, v
elif hi ==
5: r, g, b = v, p, q
r, g, b =
int(r *
255)
,int
(g *
255)
,int
(b *
255)
return r, g, b
原來需要轉置為浮點型,但是低端mcu不帶浮點運算,s,v可以擴大100or1000倍輸入,改為整形計算h =
float
(h) s =
float
(s) v =
float
(v)
沒了浮點運算,取小數部分也改改。求模再除(這個除60放到後面算式裡)。scal=1000
原:
改:h60 = h /
60.0
h60f = math.floor(h60)
hi =
int(h60f)%6
f = h60 - h60f
需要保持擴大比例,但又不能增加太多計算量,人工化簡一下,找找規律hi =
int(h/60)
%6 f =(h%60)
#/60
改:p = v *(1
- s)
q = v *(1
- f * s)
t = v *(1
-(1- f)
* s)
vs = v * s / scal
vfs = v * f * s/
60/scal
p = v - vs
q = v - vfs
t = p + vfs
這個比較簡單,就不解釋了,直接貼結果def
hsv2rgb
(h, s, v)
: scal=
1000
hi =
int(h/60)
%6f =
(h%60
)#/60
vs = v * s / scal
vfs = v * f * s/
60/scal
(v,vs,vfs)
p = v - vs
q = v - vfs
t = p + vfs
r, g, b =0,
0,0if hi ==
0: r, g, b = v, t, p
elif hi ==
1: r, g, b = q, v, p
elif hi ==
2: r, g, b = p, v, t
elif hi ==
3: r, g, b = p, q, v
elif hi ==
4: r, g, b = t, p, v
elif hi ==
5: r, g, b = v, p, q
r, g, b = r *
255/scal, g *
255/scal, b *
255/scal
return r, g, b
def
rgb2hsv
(r, g, b)
: scal =
100 mx =
max(r, g, b)
mn =
min(r, g, b)
df = mx-mn
if mx == mn:
h =0elif mx == r:
h =(60
*(g-b)
/df )
%360
elif mx == g:
h =(60
*(b-r)
/df+
120)
%360
elif mx == b:
h =(60
*(r-g)
/df+
240)
%360
if mx ==0:
s =0else
: s = df*scal/mx
v = mx*scal/
255return h, s, v
lua觸動精靈rgb轉hsv函式方法
hsv識別適用於背景色與目標色單一且反差大的場景,例如這樣的 紅色戰力和綠色戰力,我們的目的是挑戰綠色低戰力的,用找色很麻煩,因為他們是數字一直是變化的,無法用找色實現,而用hsv就可以輕鬆實現,具體hsv資料可以自己搜尋,觸動精靈目前沒有hsv相關函式,我分享乙個自己原創的。rgb轉hsv,返回h...
RGB和HSV顏色空間
rgb顏色空間 rgb red,green,blue 顏色空間最常用的用途就是顯示器系統,彩色陰極射線管,彩色光柵圖形的顯示器都使用r g b數值來驅動r g b電子槍發射電子,並分別激發螢光屏上的r g b三種顏色的螢光粉發出不同亮度的光線,並通過相加混合產生各種顏色 掃瞄器也是通過吸收原稿經反射...
RGB和HSV顏色轉換
分類 影象處理 2008 07 21 21 50 2979人閱讀收藏 舉報integer 演算法工具 c360 h引數表示色彩資訊,即所處的光譜顏色的位置。該引數用一角度量來表示,紅 綠 藍分別相隔120度。互補色分別相差180度。純度s為一比例值,範圍從0到1,它表示成所選顏色的純度和該顏色最大的...