首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问有关色度的算法

2012-04-27 
请教有关色度的算法在摄像机中一个可选择进度条表示色度(可对其进行修改),0~255,色度(HUE)现在在其他条件

请教有关色度的算法
在摄像机中一个可选择进度条表示色度(可对其进行修改),0~255,色度(HUE)
现在在其他条件都不变的情况下,改变进度条大小,想问下,它的算法是怎么样的...?

[解决办法]
仅供参考,尽管是VB6

VB code
Private Function Minimum(ParamArray Vals())Dim n As Integer, MinValOn Error Resume Next    MinVal = Vals(0)    For n = 1 To UBound(Vals)        If Vals(n) < MinVal Then MinVal = Vals(n)    Next n    Minimum = MinValEnd FunctionPrivate Function Maximum(ParamArray Vals())Dim n As Integer, MaxValOn Error Resume Next    MaxVal = Vals(0)    For n = 1 To UBound(Vals)        If Vals(n) > MaxVal Then MaxVal = Vals(n)    Next n    Maximum = MaxValEnd FunctionPrivate Sub c2hsb(ByVal clr As Long)Dim MyR As Single, MyG As Single, MyB As SingleDim Max As Single, Min As SingleDim MyS As SingleDim Delta As Single, MyVal As SingleDim cc As String * 6Dim r1, g1, b1 As ByteOn Error Resume Next    cc = Right("000000" + Hex$(clr), 6)    b1 = Val("&H" + Left(cc, 2))    g1 = Val("&H" + Mid(cc, 3, 2))    r1 = Val("&H" + Right(cc, 2))    MyR = r1 / 255: MyG = g1 / 255: MyB = b1 / 255    Max = Maximum(MyR, MyG, MyB)    Min = Minimum(MyR, MyG, MyB)    hsbB = Int(Max * 100)    If Max <> 0 Then        MyS = (Max - Min) / Max * 100    Else        MyS = 0    End If    hsbS = MyS    If hsbS = 0 Then        hsbH = 0    Else        Delta = Max - Min        Select Case Max        Case MyR            MyVal = (MyG - MyB) / Delta        Case MyG            MyVal = 2 + (MyB - MyR) / Delta        Case MyB            MyVal = 4 + (MyR - MyG) / Delta        End Select        MyVal = MyVal * 60        If MyVal < 0 Then MyVal = MyVal + 360        hsbH = MyVal    End If'   Debug.Print "hsb="; hsbH; " "; hsbS; " "; hsbBEnd Sub
[解决办法]
HSV2RGB?
网上有很多现成的算法

热点排行
Bad Request.