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

如何“最快”找出图象里颜色重复次数最大的点

2012-05-29 
怎么“最快”找出图象里颜色重复次数最大的点?VB codePrivate Declare Function GetTickCount Lib kernel32

怎么“最快”找出图象里颜色重复次数最大的点?

VB code
Private Declare Function GetTickCount Lib "kernel32" () As LongPrivate Type RGBQUAD    Blue As Byte    Green As Byte    Red As Byte    Reserved As ByteEnd TypePrivate lWidth&, lHeight&Private p() As RGBQUADPrivate Sub Command1_Click()    Dim v() As Long    Randomize        lWidth = 300: lHeight = 300    ReDim p(1 To lWidth, 1 To lHeight)        For j = 1 To lHeight        For i = 1 To lWidth            p(i, j).Red = Fix(Rnd * 256)            p(i, j).Blue = Fix(Rnd * 256)            p(i, j).Green = Fix(Rnd * 256)        Next    Next    '如何写?把数量最大,和数量第2,第3这3个点的颜色放进v()里就行了End Sub

不能用创立一个超大数组的办法,最效率的办法是什么?怎么写?

[解决办法]
计数的方法很多,例如数据库。建一个数据库表 points,字段为 Red(Byte), Blue(Byte), Green(Byte), Count(Long).

For j = 1 To lHeight
For i = 1 To lWidth
p(i, j).Red = Fix(Rnd * 256)
p(i, j).Blue = Fix(Rnd * 256)
p(i, j).Green = Fix(Rnd * 256)
Set rs = cn.Execute("SELECT * FROM pints WHERE Red =" & p(i, j).Red & " AND Blue = " & p(i, j).Blue & " AND Green=" & p(i, j).Green)
If rs.EOF Then
cn.Execute "INSERT points(Red, Blue, Green, Count) VALUES(" & p(i, j).Red & "," & p(i, j).Blue & "," & p(i, j).Green & ",1)"
Else 
cn.Execute "Update points SET Count = Count + 1 WHERE Red =" & p(i, j).Red & " AND Blue = " & p(i, j).Blue & " AND Green=" & p(i, j).Green 
End If
Next
Next

Set rs = cn.Execute("SELECT TOP 3 * FROM points ORDER BY Count DESC")

热点排行
Bad Request.