Webcam as barcode reader - C# and VB.NET samples - ByteScout

Webcam as barcode reader – C# and VB.NET samples

  • Home
  • /
  • Articles
  • /
  • Webcam as barcode reader – C# and VB.NET samples

Webcam as barcode reader tutorial shows how to read barcodes using web camera with Barcode Reader SDK.

With BarCode Reader SDK you can use webcam as barcode reader from your application. Full source code for this tutorial is available as “Read From Live Video Cam” samples (both VB.NET and C# versions) in the evaluation version of the SDK for barcode web camera.

1. Web cam module is providing frames as pictures from the web cam when user clicks Start button:

/// <summary>
       /// Function to read barcodes from image (used by new created Thread object)
       /// </summary>
       public void <span data-scayt_word="startImageProcessing" data-scaytid="2">startImageProcessing</span>()
               // work while user has not changed the status to false (i.e. false <span data-scayt_word="meanse" data-scaytid="3">meanse</span> user canceled the scan)
               while (STATUS)
                   // get current frame bitmap from camera using <span data-scayt_word="Touchless" data-scaytid="4">Touchless</span> lib
                   Bitmap bitmap = MANAGER.CurrentCamera.GetCurrentImage();
                   // search for bar codes
                   <span data-scayt_word="findBarcodes" data-scaytid="5">findBarcodes</span>(bitmap); 

                   // wait for a little to lower the CPU load
               ; // suppress errors if any

2. BarCode Reader SDK scans frames as pictures to read barcode:

/// <summary>
       /// Finds barcodes from bitmap object
       /// </summary>
       /// <param name="img">input bitmap
       private void <span data-scayt_word="findBarcodes" data-scaytid="8">findBarcodes</span>(Bitmap <span data-scayt_word="img" data-scaytid="10">img</span>)
           // create barcode object
           Reader reader = new Reader();

           // limit to <span data-scayt_word="1D" data-scaytid="12">1D</span> barcodes search only (<span data-scayt_word="2d" data-scaytid="14">2d</span> are not included to speed up search)
           // change to SymbologyFilter.FindAll to scan for all possible <span data-scayt_word="1D" data-scaytid="13">1D</span> and <span data-scayt_word="2D" data-scaytid="15">2D</span> barcodes
           reader.TypeToFind = <span data-scayt_word="GetBarcodeTypeToFindFromCombobox" data-scaytid="16">GetBarcodeTypeToFindFromCombobox</span>();

           // you may optimize processing by setting number of barcodes per page
           //reader.MaxNumberOfBarcodesPerPage = 1;
           // read barcodes from bitmap
           reader.ReadFrom(<span data-scayt_word="img" data-scaytid="11">img</span>);

           // save current time
           String <span data-scayt_word="timeNow" data-scaytid="17">timeNow</span> = string.Format("{0:<span data-scayt_word="HH" data-scaytid="19">HH</span>:mm:<span data-scayt_word="ss" data-scaytid="20">ss</span>:<span data-scayt_word="tt" data-scaytid="21">tt</span>}", DateTime.Now);

           // check barcode scan results
           if (reader.FoundBarcodes.Length > 0)
               textAreaBarcodes.SelectionStart = 0;
               textAreaBarcodes.SelectionLength = 0;
               textAreaBarcodes.SelectedText = "<span data-scayt_word="nTime" data-scaytid="22">nTime</span>: " + <span data-scayt_word="timeNow" data-scaytid="18">timeNow</span> + "n";
               // insert barcodes into the text area output
               <span data-scayt_word="foreach" data-scaytid="23">foreach</span> (<span data-scayt_word="FoundBarcode" data-scaytid="24">FoundBarcode</span> barcode in reader.FoundBarcodes)                
                   // make a sound that we found the barcode (not working on <span data-scayt_word="x64" data-scaytid="25">x64</span> due to Microsoft changed it)
                   // form the string with barcode value
                   String <span data-scayt_word="barcodeValue" data-scaytid="26">barcodeValue</span> = String.Format("Found: {0} {1}" + "rn", barcode.Type, barcode.Value);
                   // add barcode to the text area output
                   textAreaBarcodes.SelectedText = <span data-scayt_word="barcodeValue" data-scaytid="27">barcodeValue</span> + "n";                    
                   // add barcode to the list of saved barcodes
                   // increase counter of found barcodes
                   <span data-scayt_word="foundBarcodesCount" data-scaytid="28">foundBarcodesCount</span>++;
                   // update status text with number of barcodes
                   lblFoundBarcodes.Text = String.Format("Found {0} barcodes:", <span data-scayt_word="foundBarcodesCount" data-scaytid="29">foundBarcodesCount</span>);
           // make flickering for "Scanning..." label
           lblScanning.Visible = !lblScanning.Visible;