Einzelnen Beitrag anzeigen

brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#17

AW: Ansprechen einer GigE Kamera (Prosilica GC2450C)

  Alt 20. Jul 2012, 00:04
Zu 1.) Leider kenn ich mich mit dieser Api nicht aus, aber eventuell musst di bei einer Farbkamera mehr speicher reservieren. Hast du denn mal ausgerechnet ob die Größe die du reservierst stimmt? Also bei 8Bit waeren das Breite*Hoehe, bei 16 (YUV) Breite*Hoehe*2 bei RGB Breite*Hoehe*3.

zu 2.) Es kommt ganz darauf an was du spaeter mit den Daten machen willst. Wenn du diese dann sowieso komprimierst (z.b. JPEG) dann lohnt sich da z.B: LibJpegTurbo zu verwenden, dafür brauchst du noch nicht einmal ein Bitmap und z.B. fuer OpenCV glaub ich auch.

Ansonsten ist Scanline schnell genug und auch nicht wirklich langsamer als es direkt ueber die API zu machen. Wichtig ist hier, dass du EINMAL das Bitmap erstellst und die Groesse + Pixelformat setzt und NICHT fuer jedes Bild. (Das gilt auch fuer den Speicher den du fuer das Bild reservierst).

Hier Beispiel fuer 8Bit:
Delphi-Quellcode:
  // on Create
  FBmp := TBitmap.Create;
  FBmp.Width := 640; // Einstellungen der kamera
  FBmp.Height := 480;
  FBmp.PixelFormat := pf8Bit;

  // on destroy
  FreeAndNil(FBmp)

  // Pro bild
var
  y: integer;
begin
  pmem := // dein datenpointer
  for y := 0 to FBmp.Height-1 do
    CopyMemory(FBmp.Scanline[y], Pointer(Integer(pmem) + FBmp.width * y), Fbmp.height);
  
  Form1.Canvas.Draw(0,0,FBmp);
zu 3.
Die UniversalAPI bietet dir z.B. Moeglichkeiten ein Bild immer in RGB auszulesen, egal welche Einstellung die Kamera hat. In den Manuals von AVT steht vieles beschrieben (z.B. Debayering etc)

Geändert von brechi (20. Jul 2012 um 00:09 Uhr)
  Mit Zitat antworten Zitat