Barcodes per Webcam mit ZBarCode lesen

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
TroaX
Beiträge: 660
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
Wohnort: NRW
Kontaktdaten:

Barcodes per Webcam mit ZBarCode lesen

Beitrag 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/
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box :lol:
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Benutzeravatar
TroaX
Beiträge: 660
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
Wohnort: NRW
Kontaktdaten:

Re: Barcodes per Webcam mit ZBarCode lesen

Beitrag 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
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box :lol:
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Benutzeravatar
dige
Beiträge: 1182
Registriert: 08.09.2004 08:53

Re: Barcodes per Webcam mit ZBarCode lesen

Beitrag von dige »

@TroaX: Danke für den Tipp. Mich würde spontan interessieren, ob man der Software auch ein Bild übergeben kann?
"Papa, mein Wecker funktioniert nicht! Der weckert immer zu früh."
Benutzeravatar
TroaX
Beiträge: 660
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
Wohnort: NRW
Kontaktdaten:

Re: Barcodes per Webcam mit ZBarCode lesen

Beitrag von TroaX »

Ja läuft dann aber über ZBarIMG und nicht mehr ZBarCam.

Eine Anleitung ist im Archiv bzw. im Programmordner.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box :lol:
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Omi
Beiträge: 143
Registriert: 25.03.2013 09:59

Re: Barcodes per Webcam mit ZBarCode lesen

Beitrag 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
PureBasic Linux-API-Library: http://www.chabba.de
Benutzeravatar
dige
Beiträge: 1182
Registriert: 08.09.2004 08:53

Re: Barcodes per Webcam mit ZBarCode lesen

Beitrag 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:
"Papa, mein Wecker funktioniert nicht! Der weckert immer zu früh."
fabulouspaul
Beiträge: 120
Registriert: 01.04.2011 21:59

Re: Barcodes per Webcam mit ZBarCode lesen

Beitrag 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:
Antworten