Dr Tran's step by step programming lessons

Friday 12 September 2014

using Zxing for barcode reading

No comments :

I needed to be able to decode barcodes so looked for a library and stumbled across ZXing which is an open source project originally written in java. It was ported over to C# and can be found at https://zxingnet.codeplex.com/


Here is how to use it
- download the library with github, link on the site above
- add reference to the zxing.dll that corresponds to the version of .net you are using in this project (I’m using .Net 4.5 so navigate to C:\zxingnet2\net4.5

- get a barcode and put it at this location
"C:\\examples\\barcode.png"

- add this code to your function. I’m using the same code as the previous project.
- add a picturebox on the form (picturebox1)
- add two textboxes on the form (textbox1, textbox2)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenCvSharp;
using ZXing;


namespace WindowsFormsApplication2
{
   public partial class Form1 : Form
   {
       public Form1()
       {
           InitializeComponent();
           try
           {
               IplImage test = Cv.LoadImage("C:\\examples\\barcode.png", LoadMode.Color);
               Cv.NamedWindow("hello");
               Cv.ShowImage("hello", test);
               textBox1.Text = "fou";

               // create a barcode reader instance
               IBarcodeReader reader = new BarcodeReader();
               // load a bitmap
               
               var barcodeBitmap = (Bitmap)Bitmap.FromFile("C:\\examples\\barcode.png");
               // detect and decode the barcode inside the bitmap
               pictureBox1.Image = barcodeBitmap;
               var result = reader.Decode(barcodeBitmap);
               // do something with the result
               if (result != null)
               {
                   textBox1.Text = result.BarcodeFormat.ToString();
                   textBox2.Text = result.Text;
               }


               //--------------------
                


               Cv.ShowImage("hello", test);

           }
           catch (Exception ex)
           {
               int i = 0;
           }
       }
   }
}

- F5 and it will run and show the code type and code

- note that this is quite a robust reading method as long as the code is well isolated from print. Preprocessing should be used to remove another within a certain distance from the barcode.

No comments :

Post a Comment