Farben zählen
Übersicht

![]() |
soliBetreff: Farben zählen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kennt jemand einen guten Algo um die Anzahl Farben eines
Bildes zu zählen? |
||
solitaire |
judos |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
am besten du schreibst selber einen.
sollte eigentlich nicht sehr schwierig sein. Wofür sollte das denn gut sein ? mfg judos |
||
![]() |
Ctuchik |
![]() Antworten mit Zitat ![]() |
---|---|---|
Im Prinzip wäre es natürlich leicht, aber wie speichert man ab welche Farben man schon hatte?
In einem Array mit 16 Millionen Feldern? Wohl kaum! hab da jetzt noch nicht länger drüber nachgedacht, aber dass muss doch auch anders gehen, oder? |
||
Zu den Nebenwirkungen gehören trockener Mund, Übelkeit, Erbrechen, Harnstau, schmerzhafter rektaler Juckreiz, Halluzinationen, Demenz, Psychose, Koma, Tod und Mundgeruch!
Magie eignet sich nicht für alle! Fraget euren Arzt oder Apotheker! |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja, geht auch anders und das auch sehr schnell!
-alle pixel in ein Array einlesen -mit quicksort sortieren - mit einfacher if Abfrage die die verschiedenen Farben zusammen zählen! Die Function gabs auch schonmal hier im Forum! EDIT: habs gefunden https://www.blitzforum.de/viewtopic.php?t=4525 |
||
[BB2D | BB3D | BB+]
|
![]() |
Triton |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab sowas mal geschrieben und irgendwo hier gepostet, Rallimen hatte es dann nochmal schneller gemacht:
Code: [AUSKLAPPEN] ;** Minitool zum Farben-Zählen von Bildern
;** 2004, by Triton ;** überarbeitet von Rallimen Graphics 800,600,32,2 bild = LoadImage("d:\ablage\sweet.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 edit--- Mist, ich alter Mann bin zu langsam ![]() ![]() Habs gleich nochmal ins Codearchiv gepostet. |
||
Coding: silizium-net.de | Portfolio: Triton.ch.vu |
![]() |
Ctuchik |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ah! Darauf wäre ich nie im Leben gekommen ![]() Wieder was dazugelernt, danke sehr! |
||
Zu den Nebenwirkungen gehören trockener Mund, Übelkeit, Erbrechen, Harnstau, schmerzhafter rektaler Juckreiz, Halluzinationen, Demenz, Psychose, Koma, Tod und Mundgeruch!
Magie eignet sich nicht für alle! Fraget euren Arzt oder Apotheker! |
![]() |
soli |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke!
Das ist ja wirklich höllisch schnell. Nur läuft das auch korrekt? Irfanview zeigt mir bei der vinca.jpg, die Windows beiliegt, 86604 Farben an. Mit dem Algo werden aber nur 5432 gezählt. @judos Ich hatte mich an der Variante die ctuchik vorgeschlagen hat versucht. Was natürlich elend lahm war. Ohne selbst probieren hätte ich kaum nachgefragt. |
||
solitaire |
![]() |
soli |
![]() Antworten mit Zitat ![]() |
---|---|---|
Uuuuuups war mein Fehler,
hatte nicht realisiert, das bei Blitz auch bei nicht angezeigten Bildern der Desktopmode (bei mir warens 16bit) benutzt wird, egal was man im Programm selbst bei Graphics angibt. ![]() |
||
solitaire |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group