Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   QR-Code aus Bild lesen (https://www.delphipraxis.net/186625-qr-code-aus-bild-lesen.html)

nakaramia 17. Sep 2015 09:00

QR-Code aus Bild lesen
 
Hallo,

Delphi 2007 Enterprise
ZBar 0.10 - libzbar-0.dll

ich habe mich am Thread http://www.delphipraxis.net/160487-b...ml#post1109230
orientiert. Aber wie auch dort im letzten Kommentar geschrieben, erhalte ich für eine Datei mit QR-Code keinerlei Ergebnisse. In der mitgelieferten News-Datei steht, dass QR-Code ab dieser Version unterstützt wir, so dass ich das voraussetze.

In den letzten 2 Tagen habe ich o.g. Code verwendet, einen weiteren im Netz gefunden Code, das mitgelieferte C-Beispiel nachprogrammiert, verschiedene Wege (processor, scanner) probiert, am Ende immer fehler- und ergebnisfrei. Die exe der gleichen Version liefert die Daten.

Hat jemand mit dieser lib einen funktionierenden QR-Code-Reader programmiert? Wenn ja, wie?

VG und Danke
Nakaramia

nakaramia 21. Sep 2015 11:26

AW: QR-Code aus Bild lesen
 
Hallo,

ich habe mit dem Code aus o.g. Thread jetzt mal versucht, Strichcode einzulesen, funktioniert ebenfalls nicht. dll habe ich getauscht, ohne Ergebnis. Ich bekomme einfach weder Fehler noch Fund.

Vielleicht fällt jemandem am Code etwas auf.

Delphi-Quellcode:
begin
  bmp := TBitmap.Create;
  bmp.LoadFromFile(filename);
  SetGrayscale(bmp);
  scanner := GetScanner;
  image  := GetImage(bmp);
  count  := 0;
  count := zbar_scan_image(scanner, image); //<-- count ist immer 0
end;

function TQRCodeReader.GetScanner: zbar_image_scanner_t;
var
  stat : Integer;
begin
    //Scanner initiieren
  Result := zbar_image_scanner_create;
  stat := zbar_image_scanner_set_config(Result, ZBAR_QRCODE, ZBAR_CFG_ENABLE, 1);
  if stat <> 0 then
    GetErrorMessage('Image-Scanner: ', stat);
end;

function TQRCodeReader.GetImage(bmp: TBitmap): zbar_image_t;
//Scannerlesbares Bild erzeugen
var
  blubb  : PByte;
begin
  blubb := bmp.ScanLine[bmp.height-1];
  Result := zbar_image_create;
  zbar_image_set_format(Result, 'Y800');
  zbar_image_set_size(Result, bmp.width, bmp.height);
  zbar_image_set_data(Result, blubb, bmp.height*bmp.width, nil);
end;

procedure TQRCodeReader.SetGrayscale(bmp: TBitmap);
var
  x, y : integer;
  p   : ^TPixArray;
  gray : byte;
begin
  for y := 0 to bmp.Height - 1 do
  begin
    p := bmp.ScanLine[y];
    for x := 0 to bmp.Width - 1 do
    begin
      gray := round(p^[1]*0.3 + p^[2]*0.59 + p^[3]*0.11);
      p^[1] := gray;
      p^[2] := gray;
      p^[3] := gray;
      inc(p);
    end;
  end;
end;

TiGü 21. Sep 2015 11:41

AW: QR-Code aus Bild lesen
 
Speichere mal nach SetGrayscale(bmp); das Bild irgendwo hin und kontrolliere, ob es überhaupt richtig umgewandelt wird.
Ansonsten vielleicht mal diesen Quellcodeschnipsel ausprobieren:
http://www.powerbasic.com/support/pb...ad.php?t=53973

nakaramia 21. Sep 2015 13:24

AW: QR-Code aus Bild lesen
 
Läuft. :thumb:
Im Kommentar unter dem von TiGü geposteten Link findet sich der Hinweis auf eine dll für Windows

Also this component use the zbar DLL provided by the Zbar for
Windows project: http://sourceforge.net/projects/zbarw/

Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz