ERLEDIGT
NEIN
NEIN
ANTWORTEN
14
14
ZUGRIFFE
1961
1961
EMPFEHLEN
-
16.10.10 19:14 #1paul_meiz Tutorials.de Gastzugang
Also wie schon im tittel erwähnt möchte ich blaue pixel in einem bild zählen,
das bild wird in einer picturebox dargestellt und ist ein "image" (kein bitmap)
also wird die anzahl der blauen (blauähnlichen) pixel von this.pictureBox1.Image gesucht.
Ich hoffe ich habe mich klar genug ausgedrückt und bin hier an die richtigen leute geraten.
Ps: benütze Microsoft Visual Studio 2008
-
17.10.10 11:02 #2paul_meiz Tutorials.de Gastzugang
sorry für den doppel poast bin aber nicht angemeldet
habe vergessen zu erwähnen, dass die auswertung nich länger als 1 sec. dauern darf denke aber, dass das Zeitlimmit ausreichend ist.
Bin auch für teillösungen dankbar!
-
Du könntest ein Bitmap-Objekt erstellen, indem du dem Bitmap-Konstruktor das Image übergibst. Anschließend kannst du die Bitmap.GetPixel-Methode verwenden, um damit die Farbe jedes einzelnen Pixels zu überprüfen.
Wie lange das dauert hängt von der Größe des Bildes und deiner CPU ab.
-
17.10.10 22:39 #4
Und falls die Geschwindigkeit nicht reicht, such nach vb net getpixel fast way, zB http://www.bobpowell.net/lockingbits.htm
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
Da GetPixel und SetPixel sehr langsam sind: http://ezinearticles.com/?Speed-Up-C...ing&id=1284701
-
18.10.10 09:43 #6
Da ich mal was ähnliches gemacht habe gebe ich dir mal die Funktion die ich verwende.
(Es ist nicht alles von mir aber teilweise optimiert. )
(code tags von mod eingesetzt)Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
public static int getBluePixelCount(Bitmap pBild) { int Count=0; if (pBild == null) return Count; // GDI+ still lies to us - the return format is BGR, NOT RGB. BitmapData bmData = pBild.LockBits(new Rectangle(0, 0, pBild.Width, pBild.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); int scanline = bmData.Stride; System.IntPtr Scan0 = bmData.Scan0; unsafe { byte* pSrc = (byte*)(void*)Scan0; byte r, g, b; int nOffset = bmData.Stride - pBild.Width * 3; int nWidth = pBild.Width; int nHeight = pBild.Height; int Offset; for (int yOffset = 0; yOffset < nHeight * scanline; yOffset += scanline) { for (int xOffset = 0; xOffset < nWidth * 3; xOffset += 3) { Offset = yOffset + xOffset; b = pSrc[Offset]; // Blauanteil g = pSrc[Offset + 1]; // Grünanteil r = pSrc[Offset + 2]; // Rotanteil if (b > (r + g)) Count++; // Sehr einfache Abfrage /bitte optimieren } } } pBild.UnlockBits(bmData); //MessageBox.Show(Count+""); return Count; }
Du solltest natürlich noch die Abfrage ob der Pixel als blau angesehen wird anpassen.Geändert von chmee (18.10.10 um 11:51 Uhr) Grund: code tags
-
18.10.10 11:51 #7
Ist aber kein .net
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
18.10.10 15:24 #8
Es ist C# Code.
Es ist doch .NET die Befehle für den Speicherzugriff (LockBits,UnlockBits) sind Teil des Frameworks.
Die Pointerzugriffe Teil des C# Sprachumfang.
-
18.10.10 16:00 #9
Ups, Sorry
Dann nehme ich meine Aussage zurück.
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
18.10.10 18:09 #10paul_meiz Tutorials.de Gastzugang
@ 600emaster
Danke für den code schnipsel
bei if (b > (r + g)) Count++;
werd ich wohl einen konstanten wert stat r + g nehmen, daher fällt denn auch die abfrage weck
@ alle
ich bin kein pro aber this.pictureBox1.Image is ja kein bitmap also müste ich's erst noch konvertieren oder?
wie mach ich dass?
wäre dankbar für nen code
MFG
Ps: Dannke an alle die sich meinem Problem annehmen
-
18.10.10 18:23 #11paul_meiz Tutorials.de Gastzugang
bekomme bei 600emaster's code noch den fehler:
Error 1 The type or namespace name 'BitmapData' could not be found (are you missing a using directive or an assembly reference?) C:\Dokumente und Einstellungen\orlando\Desktop\Neuer Ordner\Webcam_Test\Form1.cs 206 13 Webcam_Test
-
Image ist kein Bitmap, aber Bitmap ist ein Image. Du kannst aber über new Bitmap(Image) eine Umwandlung machen.
Siehe dazu in der Dokumentation unter "Vererbungshierarchie"
http://msdn.microsoft.com/de-de/libr...ing.image.aspx
Hast du den Satz gelesen und es überprüft "are you missing a using directive or an assembly reference?".
Siehe hier für den erforderlichen Verweise: http://msdn.microsoft.com/de-de/libr...itmapdata.aspx
-
18.10.10 19:33 #13paul_meiz Tutorials.de Gastzugang
OK habe ".Imaging" vergessen
Das mit dem konvertieren hat ja Shakie schon gesagt, ich habs nur überlesen
Peinlich :-P
aber ich kriege noch den fehler
Error 1 Unsafe code may only appear if compiling with /unsafe C:\Dokumente und Einstellungen\p-meiz\Desktop\blaupixeltest\Form1.cs 217 13 Webcam_Test
Ich habs gelesen weiß aber net was "compiling with /unsafe" meint oder besser wie ich mit "/unsafe" compeliere!
Ps: MVS 2008
-
-
19.10.10 18:32 #15paul_meiz Tutorials.de Gastzugang
Danke an alle!
Leuft so weit und ist auch schnell genug.
Im nachhinein ist mir aber aufgefallen, dass es schön wer, wenn jemand 600emaster's funktion so verändern könnte, dass auch ein bild ausgegebne wird, indem die gezählten pixel rot sind.
gleichzeitig soll aber auch die anzahl ermittelt werden.
Aber ich bin schon sehr glücklich das das zählen klapt, dass einfärben währ nur ein zusatz.
Ähnliche Themen
-
Pixel zählen mit Visual Basic
Von dumme nuss im Forum Visual Basic 6.0Antworten: 3Letzter Beitrag: 19.04.08, 21:35 -
Pixel zählen
Von Kai Pflaume im Forum PhotoshopAntworten: 2Letzter Beitrag: 28.11.07, 13:14 -
pixel zählen, bei auswahl
Von 61850n im Forum PhotoshopAntworten: 15Letzter Beitrag: 20.02.06, 23:32 -
bestimmte Pixel zählen in Bild
Von Andreas S im Forum Visual Basic 6.0Antworten: 3Letzter Beitrag: 02.11.04, 20:17 -
Pixel auf dem Bildschärm zählen!
Von Rustyaxe im Forum C/C++Antworten: 4Letzter Beitrag: 09.09.03, 13:26





Zitieren


Login





