Seite 1 von 1

Barcodes per Webcam mit ZBarCode lesen

Verfasst: 20.10.2018 15:26
von TroaX
Wer nach einer Quick-N-Dirty Möglichkeit sucht, Barcodes per Webcam einzulesen, dem hilft ZBarCode weiter. Diesem programm liegen auch die C-Header, sowie die statischen Bibliotheken bei, um sie fest zu integrieren. Aber das wäre ja nicht Quick-N-Dirty ;)

Hier einmal über das CLI:

Code: Alles auswählen

OpenConsole()

Scanner = RunProgram("C:\Program Files (x86)\ZBar\bin\zbarcam.exe","","",#PB_Program_Open | #PB_Program_Read)

While ProgramRunning(Scanner)
	If AvailableProgramOutput(Scanner)
		PrintN("Barcode: "+StringField(ReadProgramString(Scanner),2,":")) ; In Index 1 steht der gelesene Barcode-Typ
		PrintN("")
		Delay(1000)
  EndIf	
Wend
So sieht es aus:
Bild

Hier gibt es das Programm: http://zbar.sourceforge.net/

Re: Barcodes per Webcam mit ZBarCode lesen

Verfasst: 20.10.2018 19:01
von TroaX
Hier jetzt noch einmal eine Variante mit freier Positionierung des ZBar-Fensters sowie Entfernung des Rahmens. So lässt sich das Fenster als Overlay über die eigene Anwendung legen. Ist alelrdings nicht Crossplattform. Der obige Code schon, da ZBar auch für Linux erhältlich ist. Muss nur der richtige Programmname angegeben werden.

Code: Alles auswählen

EnableExplicit

ExamineDesktops()

OpenConsole()

Define.RECT WinPos
Define.l Scanner, ZBarHandle, SizeX, SizeY
Define.s Income

Scanner = RunProgram("C:\Program Files (x86)\ZBar\bin\zbarcam.exe","","",#PB_Program_Open | #PB_Program_Read)

While Not FindWindow_(0,"ZBar") And ProgramRunning(Scanner)
	Delay(10)
Wend

ZBarHandle = FindWindow_(0,"ZBar")

If GetWindowRect_(ZBarHandle,WinPos)
	SizeX = WinPos\right - WinPos\left
	SizeY = WinPos\bottom - WinPos\top
Else
	SizeX = 640
	SizeY = 480
EndIf

SetWindowLongPtr_(ZBarHandle, #GWL_STYLE, GetWindowLongPtr_(ZBarHandle, #GWL_STYLE) ! (#WS_DLGFRAME | #WS_BORDER | #WS_SIZEBOX))
MoveWindow_(ZBarHandle,DesktopWidth(0)-SizeX+15,0,SizeX,SizeY,0)

While ProgramRunning(Scanner)
	If AvailableProgramOutput(Scanner)
		Income = ReadProgramString(Scanner)
		PrintN("Barcode: "+StringField(Income,2,":"))
		PrintN("Der Barcode-Typ ist: "+StringField(Income,1,":"))
		PrintN("")
		Delay(500)
  EndIf	
Wend
Vor allem die Lesegeschwindigkeit und Zuverlässigkeit von QR-Codes macht echt was her ;)

So sieht es aus:
Bild

Re: Barcodes per Webcam mit ZBarCode lesen

Verfasst: 22.10.2018 09:46
von dige
@TroaX: Danke für den Tipp. Mich würde spontan interessieren, ob man der Software auch ein Bild übergeben kann?

Re: Barcodes per Webcam mit ZBarCode lesen

Verfasst: 22.10.2018 10:20
von TroaX
Ja läuft dann aber über ZBarIMG und nicht mehr ZBarCam.

Eine Anleitung ist im Archiv bzw. im Programmordner.

Re: Barcodes per Webcam mit ZBarCode lesen

Verfasst: 22.10.2018 18:21
von Omi
Hi,
hier Linux-Beispiele:

Kodieren: http://www.chabba.de/Linux/Misc/Gadget_QrGenerator.pb

Dekodieren des oben als /tmp/tmp.png erstellten Codes: http://www.chabba.de/Linux/Misc/Gadget_QrDecode.pb

Grüße, Charly

Re: Barcodes per Webcam mit ZBarCode lesen

Verfasst: 23.10.2018 09:37
von dige
TroaX hat geschrieben:Ja läuft dann aber über ZBarIMG und nicht mehr ZBarCam.
Habs mir gleich mal geladen - funktioniert super!!! Das sind ja ganz neue Möglichkeiten :bounce:

Re: Barcodes per Webcam mit ZBarCode lesen

Verfasst: 23.10.2018 14:16
von fabulouspaul
Ich nutze ZBAR schon seit längerem in einem PB Projekt für Recherchen in digitalisierten Dokumenten (DIN A4 und größer) und es funktioniert stabil und schnell.

Als Tip: ich lasse mehrere Instanzen von ZBAR parallel laufen um den Prozess zu beschleunigen - klappt einwandfrei. :allright: