利用DIB提取影像的像素存入一個colout陣列中,已經實作,
r=colout(2,x,y)
g=colout(1,x,y)
b=colout(0,x,y)
例如我要求(2,4)到(7,9)范圍內的r分量的總和,演算法該怎么寫
uj5u.com熱心網友回復:
(2,4)(7,9)為矩陣的對角uj5u.com熱心網友回復:
Public Sub mosaic()Dim r As Long
Dim g As Long
Dim w As Long
Dim h As Long
w = Text1.Text
h = Text2.Text
row = Int(Picture1.ScaleWidth / w)
lin = Int(Picture1.ScaleHeight / h)
rl = Picture1.ScaleWidth Mod h
ll = Picture1.ScaleHeight Mod w
For y = 0 To (lin - 1) * h Step h
For x = 0 To (row - 1) * w Step w
For k = x To w - 1
For j = y To h - 1
r = ColOut(2, k, j)
g = ColOut(1, k, j)
b = ColOut(0, k, j)
Next j
Next k
For k = x To w - 1
For j = y To h - 1
ColOut(2, k, j) = r / (w * h)
ColOut(1, k, j) = g / (w * h)
ColOut(0, k, j) = b / (w * h)
Next j
Next k
Picture2.Refresh
Next x
If rl <> 0 Then
xl = Picture1.ScaleWidth - rl
For k = x To xl - 1
For j = y To h - 1
r = ColOut(2, k, j)
g = ColOut(1, k, j)
b = ColOut(0, k, j)
Next j
Next k
For k = x To xl - 1
For j = y To h - 1
ColOut(2, k, j) = r / (xl * h)
ColOut(1, k, j) = g / (xl * h)
ColOut(0, k, j) = b / (xl * h)
Next k
Next j
Picture2.Refresh
End If
Next y
If ll <> 0 Then
yl = Picture.ScaleHeight - ll
For x = 0 To (row - 1) * w Step w
For k = x To w - 1
For j = y To yl - 1
r = ColOut(2, k, j)
g = ColOut(1, k, j)
b = ColOut(0, k, j)
Next j
Next k
For k = x To w - 1
For j = y To yl - 1
ColOut(2, k, j) = r / (w * yl)
ColOut(1, k, j) = g / (w * yl)
ColOut(0, k, j) = b / (w * yl)
Next k
Next j
Picture2.Refresh
End If
Next x
If rl <> 0 Then
xl = Picture1.ScaleWidth - rl
yl = Picture.ScaleHeight - ll
For k = x To xl - 1
For j = y To yl - 1
r = ColOut(2, k, j)
g = ColOut(1, k, j)
b = ColOut(0, k, j)
Next j
Next k
For k = x To xl - 1
For j = y To yl - 1
ColOut(2, k, j) = r / (xl * yl)
ColOut(1, k, j) = g / (xl * yl)
ColOut(0, k, j) = b / (xl * yl)
Next k
Next j
Picture2.Refresh
End If
End If
End Sub
這短程式哪里出錯了
uj5u.com熱心網友回復:
Public Sub mosaic()
Dim r As Long
Dim g As Long
Dim w As Long
Dim h As Long
w = Text1.Text
h = Text2.Text
row = Int(Picture1.ScaleWidth / w) '馬賽克列數-1
lin = Int(Picture1.ScaleHeight / h) '馬賽克行數-1
rl = Picture1.ScaleWidth Mod h '所余塊中的列數
ll = Picture1.ScaleHeight Mod w '所余塊中的行數
For y = 0 To (lin - 1) * h Step h
For x = 0 To (row - 1) * w Step w
For k = x To w - 1
For j = y To h - 1
r = ColOut(2, k, j)
g = ColOut(1, k, j)
b = ColOut(0, k, j)
Next j
Next k
For k = x To w - 1
For j = y To h - 1
ColOut(2, k, j) = r / (w * h)
ColOut(1, k, j) = g / (w * h)
ColOut(0, k, j) = b / (w * h)
Next j
Next k
Picture2.Refresh
Next x
If rl <> 0 Then
xl = Picture1.ScaleWidth - rl
For k = x To xl - 1
For j = y To h - 1
r = ColOut(2, k, j)
g = ColOut(1, k, j)
b = ColOut(0, k, j)
Next j
Next k
For k = x To xl - 1
For j = y To h - 1
ColOut(2, k, j) = r / (xl * h)
ColOut(1, k, j) = g / (xl * h)
ColOut(0, k, j) = b / (xl * h)
Next k
Next j
Picture2.Refresh
End If
Next y
If ll <> 0 Then
yl = Picture.ScaleHeight - ll
For x = 0 To (row - 1) * w Step w
For k = x To w - 1
For j = y To yl - 1
r = ColOut(2, k, j)
g = ColOut(1, k, j)
b = ColOut(0, k, j)
Next j
Next k
For k = x To w - 1
For j = y To yl - 1
ColOut(2, k, j) = r / (w * yl)
ColOut(1, k, j) = g / (w * yl)
ColOut(0, k, j) = b / (w * yl)
Next k
Next j
Picture2.Refresh
End If
Next x
If rl <> 0 Then
xl = Picture1.ScaleWidth - rl
yl = Picture.ScaleHeight - ll
For k = x To xl - 1
For j = y To yl - 1
r = ColOut(2, k, j)
g = ColOut(1, k, j)
b = ColOut(0, k, j)
Next j
Next k
For k = x To xl - 1
For j = y To yl - 1
ColOut(2, k, j) = r / (xl * yl)
ColOut(1, k, j) = g / (xl * yl)
ColOut(0, k, j) = b / (xl * yl)
Next k
Next j
Picture2.Refresh
End If
End If
End Sub
哪里出錯了
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/123881.html
標籤:API
上一篇:求影像馬賽克顯示的演算法
