Forum: PC-Programmierung Bild aus Camera anzeigen


von Nicole F. (Gast)


Lesenswert?

Hallo,

irgendwie komme ich mit diesem c# nicht ganz klar. Ich versuche ein 
Bitmap anzuzeigen, dessen Werte ich per RS232 einlese. Es sind 
graustufen Werte.
Mit dem unten stehendem Code zeigt es mir nur ein graues Bild an. 
Irgendetwas läuft schief.
1
if (InputData.EndsWith("!"))
2
     {
3
         InputData = InputData.Substring(0, InputData.Length - 2);
4
         daten = (InputData.Split(';'));
5
6
         for (int i = 0; i < daten.Length;i++ )
7
             bildArray[i] = Convert.ToInt16(daten[i]);
8
9
         int x = 0;
10
         int y = 0;
11
12
         Bitmap bild = new Bitmap(130, 130);
13
         for (int i=0;i<16000;i++)
14
         {
15
             bild.SetPixel(x, y, Color.FromArgb(Convert.ToInt16(bildArray[i]), Convert.ToInt16(bildArray[i]), Convert.ToInt16(bildArray[i])));
16
             //bild.SetPixel(x, y, Color.FromArgb(bildArray[i]));
17
             x += 1;
18
             if(x>127)
19
             {
20
                 x = 0;
21
                 y += 1;
22
             }
23
24
         }
25
        
26
         pictureBox1.Image = bild;
27
        
28
29
     }

Vielen Dank!

von Udo S. (urschmitt)


Lesenswert?

Nicole F. schrieb:
> Bitmap

Ohne mir den Code angeschaut zu haben:
Es gibt Dutzende von Bildformaten
Und du weisst genau in welchem Format dein Bild übertragen wird?

von Nicole F. (Gast)


Lesenswert?

Udo Schmitt schrieb:
> Nicole F. schrieb:
>> Bitmap
>
> Ohne mir den Code angeschaut zu haben:
> Es gibt Dutzende von Bildformaten
> Und du weisst genau in welchem Format dein Bild übertragen wird?

8Bit Graustufen 123 Zeilen zu je 129 Spalten

von Peter II (Gast)


Lesenswert?

Nicole F. schrieb:
> 8Bit Graustufen 123 Zeilen zu je 129 Spalten

passt schon mal nicht zu

> Bitmap(130, 130);

von Peter II (Gast)


Lesenswert?

Peter II schrieb:
> Nicole F. schrieb:
>> 8Bit Graustufen 123 Zeilen zu je 129 Spalten
>
> passt schon mal nicht zu
>
>> Bitmap(130, 130);

sorry, da du das bild nicht direkt umrechnest, sondern jeden Pixel 
einzeln setzt ist das ja egal.

Wenn das bild nur Grau ist, würde ich einfach mal die Daten ausgeben, 
die du in die Pixel schreibest, vermutlich steht dort schon Unsinn drin.

von Nicole F. (Gast)


Lesenswert?

Die Graustufen Werte liegen zwischen 49 und 51. Das Problem scheint wohl 
hierdran zu liegen?!

von Peter II (Gast)


Lesenswert?

Nicole F. schrieb:
> Die Graustufen Werte liegen zwischen 49 und 51. Das Problem scheint wohl
> hierdran zu liegen?!

das teste doch mal 49 -> rot, 50 -> grün -> 51 blau und schau was 
rauskommt.

von Nicole F. (Gast)


Lesenswert?

Ich habe Graustufen Wert. Für jedes Pixel setze ich bei RGB den gleichen 
Grauwert für R,G und B ein.

von Peter II (Gast)


Lesenswert?

Nicole F. schrieb:
> Ich habe Graustufen Wert. Für jedes Pixel setze ich bei RGB den gleichen
> Grauwert für R,G und B ein.

ja, aber damit könnte sein damit du nichts sieht. setzte es doch 
testweise auf echte Farben um.

von Nicole F. (Gast)


Lesenswert?

Das geht doch nicht.

von Sebastian S. (amateur)


Lesenswert?

Die meisten, im Netz und sonst wo verfügbaren, Funktionen stellen 
"fertige" Bilddaten dar.
Also Bitmaps, Jpegs, Tiffs usw.
Mir - zumindest - ist keines bekannt, dass Bildpunkte anzeigen kann.
Also musst Du eine (z.B.) leere Bitmap, mit genau passenden 
Metainformationen generieren, Deine Bildpunkte an den vorgeschriebenen 
Stellen setzen und dann Deiner Anzeigefunktion übergeben.
Ist das Format konstant, brauchst Du natürlich nur einmal eine leere 
Bitmap zu erzeugen. Du kannst anschließend immer wieder die gleiche Form 
verwenden und nur Deine Bildpunkte zu setzen.

von Peter II (Gast)


Lesenswert?

Nicole F. schrieb:
> Das geht doch nicht.

und warum nicht?

Ich dachte du willst etwas weiterkommen bei deinem Problem.

von Nicole F. (Gast)


Lesenswert?

Peter II schrieb:
> und warum nicht?
Aus einem ganz einfachen Grund:
Ich habe ein eindimensionales Array wo mir knapp die graustufen werte zu 
16000 Pixeln vorliegen. Diese Werte liegen "nur" zwischen 49 und 51. Das 
ist natürlich zu wenig. Denn 255 ist ganz hell und 0 ist Schwarz. Daher 
nehme ich an, das meine vorliegenden Werte müll sind. Das Problem liegt 
anscheind beim sendendem System (ATMega32 mit einer GameBoy Camera).

>
> Ich dachte du willst etwas weiterkommen bei deinem Problem.
Ja, aber das Problem liegt woanders. Siehe oben.

von Max D. (max_d)


Lesenswert?

Nicole F. schrieb:
> Das Problem liegt
> anscheind beim sendendem System (ATMega32 mit einer GameBoy Camera).

Das hast du nicht vorher geprüft?
Reicht ja schon, dass du den mega einfach graustufe = x+y senden lässt.

von Nicole F. (Gast)


Lesenswert?

Max D. schrieb:
> Nicole F. schrieb:
>> Das Problem liegt
>> anscheind beim sendendem System (ATMega32 mit einer GameBoy Camera).
>
> Das hast du nicht vorher geprüft?
Eigentlich schon, aber ich habe mich wohl vertan. Das Problem liegt 
eindeutig beim atmega. Ich mache dafür einen neuen Thread auf

von heinz (Gast)


Lesenswert?

Habe gerade keinen Rechner mit Visual Studio hier, aber besteht der argb 
Wert nicht aus 4 Zahlen, wobei die erste der alpha Kanal ist? Also alpha 
auf 255 setzten.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.