Farben eines Bildes zählen

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Triton

Betreff: Farben eines Bildes zählen

BeitragMi, Okt 26, 2005 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Dieser Code zählt die Farben, die in einem Bild vorkommen.
Habs irgendwann '04 geschrieben, wie da schon steht.
Besonderen dank hier nochmal an Rallimen, der es enorm verschnellern
konnte.

BlitzBasic: [AUSKLAPPEN]

;** Minitool zum Farben-Zählen von Bildern
;** 2004, by Triton
;** überarbeitet von Rallimen
Graphics 800,600,32,2
bild = LoadImage(\"d:\ablage\bild.jpg\")

breite=ImageWidth(bild)
hoehe=ImageHeight(bild)
Dim farbe(breite * hoehe)

timer1 = MilliSecs()
SetBuffer ImageBuffer(bild)
LockBuffer ImageBuffer(bild)

For scanX = 0 To breite -1
For scanY = 0 To hoehe -1
farbe(z) = ReadPixelFast(scanX,scanY)
z= z +1
Next
Next
UnlockBuffer ImageBuffer(bild)
quicksort(0,breite*hoehe)
For z = 1 To breite * hoehe
If Farbe (z -1) <> Farbe (z) Then farbenanzahl = farbenanzahl +1
Next
timer1 = MilliSecs() -timer1
SetBuffer FrontBuffer()
DrawBlock bild, 0,0
Color 0,0,0
Rect 0,0,300,30,1
Color 255,255,255

Text 0,0,\"Dieses Bild enthält \"+farbenanzahl+\" Farben\"
Text 0,15,\"Dieses Bild dauerte \"+timer1 + \" Millisek.\"
WaitKey
Cls
For t= 0 To breite*hoehe
DebugLog Farbe (t)
Next
End

; Speedsort
Function quicksort(l,r)
Local p,q,h
p=l : q=r
x=Farbe((l+r)/2)
Repeat
While Farbe(p)<x
p=p+1
Wend
While x<Farbe(q)
q=q-1
Wend
If p>q Then Exit
;SWAP------------------

h=Farbe (q)
Farbe (q)=Farbe (p)
Farbe (p)=h
;----------------------
p=p+1
q=q-1
If q<0 Then Exit
Forever
If l<q Then a=quicksort(l,q)
If p<r Then a=quicksort(p,r)
Return True
End Function
Coding: silizium-net.de | Portfolio: Triton.ch.vu

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group