| |
|
|
Sven Bader | ici habe je une Code pour une Weichzeichen-filtre, aus Performance-Trouvé plutôt pour kleine Grafiken approprié.
Über den dritten paramètre qui Blur-Funktion peut sich steuern, comment souvent qui filtre angewendet wird.
Proc Blur
Paramètres width&, height&, passes&
Déclarer avg_red&, avg_green&, avg_blue&, new_image&[width&-1, height&-1, 2]
Déclarer count&, box&, x&, y&, i&, j&
whileLoop passes&
box& = 1
WhileLoop 0, width& - 1
i& = &loop
WhileLoop 0, height& - 1
j& = &loop
clear avg_red&, avg_blue&, avg_green&, count&
WhileLoop (i& - box&), (i& + box&)
x& = &loop
Cas (x& = width&) : Pause
Cas (x& < 0) : Continue
WhileLoop (j& - box&), (j& + box&)
y& = &loop
cas (y& = height&) : Pause
cas (y& < 0) : Continue
inc count&
avg_red& = avg_red& + image&[x&, y&, 0]
avg_green& = avg_green& + image&[x&, y&, 1]
avg_blue& = avg_blue& + image&[x&, y&, 2]
Endwhile
Endwhile
new_image&[i&, j&, 0] = avg_red& / count&
new_image&[i&, j&, 1] = avg_green& / count&
new_image&[i&, j&, 2] = avg_blue& / count&
Endwhile
Endwhile
MAT image&[] = new_image&[]
Endwhile
ENDPROC
Cls
Déclarer x&, y&, px&, width&, height&
'===================== Bild dans Array einlesen
DrawIcon "EIS", 50, 50
width& = 32
height& = 32
Déclarer image&[width&-1, height&-1, 2]
WhileLoop 0, height& - 1
y& = &loop
WhileLoop 0, width& - 1
x& = &loop
px& = GetPixel(50 + x&, 50 + y&)
image&[x&, y&, 0] = GetRValue(px&)
image&[x&, y&, 1] = GetGValue(px&)
image&[x&, y&, 2] = GetBValue(px&)
Endwhile
Endwhile
'===================== filtre anwenden
Blur(width&, height&, 5)
'===================== geglättetes Bild Montrer
WhileLoop 0, height& - 1
y& = &loop
WhileLoop 0, width& - 1
x& = &loop
SetPixel 100 + x&, y& + 50, RGB(image&[x&, y&, 0], image&[x&, y&, 1], image&[x&, y&, 2])
Endwhile
Endwhile
WaitKey
Fin
qui Flaschenhals ist ici pas einmal qui filtre selbst (wobei qui aussi) mais cela GetPixel et SetPixel. tourner autour de pourrait on cela zum Beispiel sur une 24-Bit-Bitmap-Dossier, qui on comme Block einliest.
un qualitativer Tweak wäre, qui Funktion seulement une Teilbereich glätten trop laisser, qui Ränder mais quand même im Array vorzuhalten. ensuite würden qui Randbereiche pas so abgehackt air. Hierzu devrait on ensuite qui 4 Cas-Abfragen entfernen et den x/y-Offset comme paramètre mitgeben.
Viel Amusement beim Glätten |
|
|
| |
|
|