Page 2 of 2

Re: ZBAR examples

Posted: Sat Apr 06, 2019 3:19 am
by AAT
infratec, thank you very much for sharing your wrapper!
Can you give an example how to use zbar with webcam directly (without saving picture to file)?

Re: ZBAR examples

Posted: Sat Apr 06, 2019 9:27 pm
by infratec
HI,

sorry for the delay, but my code was not running in win10.
After a hour of searching I found out that libzbar-0.dll was the fault.
I downloaded then:

https://sourceforge.net/projects/zbarw/ ... p/download

and it worked.

Code: Select all

EnableExplicit


IncludeFile "ZBar.pbi"


ProcedureC data_handler(*img, *userdata)
  
  Protected *sym, type.i, *data
  
  
  Debug "data_handler"
  
  *sym = zbar_image_first_symbol(*img)
  
  While *sym
    If zbar_symbol_get_count(*sym)
      Continue
    EndIf
    
    type = zbar_symbol_get_type(*sym)
    If type = #ZBAR_PARTIAL
      Continue
    EndIf
    
    Debug zbar_symbol_get_data(*sym)
    Debug zbar_get_symbol_name(type)
    
    *sym = zbar_symbol_next(*sym)
  Wend
  
EndProcedure



Define.l infmt, outfmt, display, active, rc
Define.i Result

Define *proc
Define video_device$



If ZBar_Init()
  
  *proc = zbar_processor_create(1)
  If *proc
    zbar_processor_set_data_handler(*proc, @data_handler(), #Null)
    
    video_device$ = ""
    infmt = 0
    outfmt = 0
    display = #True
    
    
    zbar_processor_request_size(*proc, 640, 480)
    
    If infmt Or outfmt
      zbar_processor_force_format(*proc, infmt, outfmt)
    EndIf
    
    
    If zbar_processor_init(*proc, @video_device$, display) Or (display And zbar_processor_set_visible(*proc, #True))
      Result = zbar_processor_error_spew(*proc, 0)
      Debug "zbar_processor_init : " + Str(Result)
      End Result
    EndIf

    ; start video
    active = #True
    If zbar_processor_set_active(*proc, active)
      Result = zbar_processor_error_spew(*proc, 0)
      Debug "zbar_processor_set_active" + Str(Result)
      End Result
    EndIf
    
    ; let the callback handle Data
    Repeat
      rc = zbar_processor_user_wait(*proc, -1)
      
      Debug rc
      
      If rc = 'q' Or rc = 'Q'
        Break
      EndIf
      
      If rc = ' '
        If active
          active = #False
        Else
          active = #True
        EndIf
        
        If zbar_processor_set_active(*proc, active)
          Result = zbar_processor_error_spew(*proc, 0)
          Debug "zbar_processor_set_active" + Str(Result)
          End Result
        EndIf
      EndIf
    Until rc >= 0
    
    If rc <> 0 And rc <> 'q' And rc <> 'Q' And zbar_processor_get_error_code(*proc) <> #ZBAR_ERR_CLOSED
      Result = zbar_processor_error_spew(*proc, 0)
      Debug Result
      End Result
    EndIf

    ; free resources (leak check)
    zbar_processor_destroy(*proc)
    
  Else
    Debug "ERROR: unable to allocate memory?"
  EndIf
  
EndIf

Re: ZBAR examples

Posted: Sat Apr 06, 2019 9:45 pm
by infratec
Else you can use any methode to get a picture into RAM and convert it to a form which zbar understand.
Look at the example with the loaded file :wink:

I used escapi3 for things like this.

Re: ZBAR examples

Posted: Sun Apr 07, 2019 3:37 am
by AAT
Hi, infratec!
Your examples are interesting and very useful especially to get started with zbar!
But I think it will take quite a long time to get a really working program. :wink:

There are some troubles with zbar:
1. video freezes often:

Code: Select all

ProcedureC data_handler(*img, *userdata)
...
   While *sym
    If zbar_symbol_get_count(*sym) ; <------freezes here!
      Continue
    EndIf
 ...
  Wend
 
EndProcedure
2. after updating libraries to version 20121031 an error appeared in OwnCleanUp(*image.zbar_image_s) during executing:

Code: Select all

[ERROR] The specified '*MemoryID' is not valid.
I think it's needed to update the functions prototypes for libraries v. 20121031

But these are the details... Thanks again for the great work!
Good luck!

Re: ZBAR examples

Posted: Sun Apr 07, 2019 2:12 pm
by infratec
Hi,

this windows version use a newer structure, but does not increase the version to 0.11 :!:


I updated the listing on the fisrt page

If you add the crop stuff, the IMA with OwnCleanup() is fixed.

With my webcam (Microsoft VX-6000) I get no freezes.
So I can not help you.

Re: ZBAR examples

Posted: Tue Nov 10, 2020 7:49 pm
by loulou2522
Hi Infratec,
I download the dll libzbar-0.dll from https://sourceforge.net/projects/zbarw/ ... p/download like you mentionned in your post and try to use ypur wrapper. Unfortunetly the l libzbar-0.dll won't want to load ?
Have you an idea ?
Thanks in advance


I am on windows 10 with the last version on Purebasic 5.73 beta 4

Re: ZBAR examples

Posted: Tue Nov 10, 2020 9:58 pm
by infratec
This is a x86 dll.
Did you use PB x86 ?

As written you need also libiconv-2.dll.
Is it in the same directory?

Btw. From where you downloaded beta 4 :?:
I only know beta 3

Re: ZBAR examples

Posted: Wed Nov 11, 2020 3:52 am
by loulou2522
[quote="infratec"]This is a x86 dll.
Did you use PB x86 ? Yes

As written you need also libiconv-2.dll.
Is it in the same directory? Yes

Btw. From where you downloaded beta 4 ?: I only know beta 3 Sorry i use PB 5.73 beta 3

I try to FreeMemory(*image\Data)
launch with n older version of PB (PB 5.72) It works but i have an error on following lines

Code: Select all

Ligne 947   FreeMemory(*image\Data)  l'argument *MemoryId spécifié n'est pas valide

Re: ZBAR examples

Posted: Wed Nov 11, 2020 8:04 am
by infratec
Do you use the fix from above?

Code: Select all

Structure zbar_image_s
I will try it today with 5.73b3

Re: ZBAR examples

Posted: Wed Nov 11, 2020 8:47 am
by loulou2522
infratec wrote:Do you use the fix from above?

Code: Select all

Structure zbar_image_s
I will try it today with 5.73b3
Result finally I put the new structure in my programm and execute it . It works wel. With PB 6.75 beta 3 the problem is always the same.

Re: ZBAR examples

Posted: Wed Nov 11, 2020 10:14 am
by Jac de Lad
loulou2522 wrote:PB 6.75 beta 3
Wow, you're the first time traveller I've met! I love such typos...

Re: ZBAR examples

Posted: Wed Nov 11, 2020 10:26 am
by infratec
I just tested it with PB 5.73 beta 3 x86 on Windows 10 x64:

I had to comment in the Align #PB_Structure_AlignC at the Structure zbar_image_s

I copied my complete file to my post on page 1.
Please copy the complete file as new zbar.pbi.

Re: ZBAR examples

Posted: Fri Aug 16, 2024 10:33 am
by Oliver13
@infratec, thank you very much for the include and sample.
Selecting a video source and taking a qr code by camera works well.

Could you please help with the following further questions, too ?

- when user closes scan window, the zbar_processor_user_wait seems still to be active
If I change line 82 to

Code: Select all

If rc = 'q' Or rc = 'Q' Or rc=-1
the loop will be leaved, but then an IMA occurs

- is there a way to retrieve the available videosources ? This would allow to pass video_device$ to zbar_processor_init() in order to avoid the user needing to select the camera every time again

- is there a way to enable the green/red detection rectangles (as shown in zbarcam.exe), when a barcode is detected ?

Thank you and kind regards
Oli

Re: ZBAR examples

Posted: Wed Aug 21, 2024 7:51 am
by infratec
Hi Oliver,

my zbar stuff is now nearly 4 years old and I don't use it since years, since I use now an other tool to decode QRCode.
I just tried to run my code with PB 6.11 and it is not runing.
At the moment I have no time to deep dive into zbar stuff.

But I think there are some C examples available which shows how this can be achieved.