ByteScout Barcode Reader SDK - C# - Image Preprocessing Filters - ByteScout

ByteScout Barcode Reader SDK – C# – Image Preprocessing Filters

  • Home
  • /
  • Articles
  • /
  • ByteScout Barcode Reader SDK – C# – Image Preprocessing Filters

image preprocessing filters in C# and ByteScout BarCode Reader SDK

How to use ByteScout BarCode Reader SDK for image preprocessing filters in C#

These source code samples are listed and grouped by their programming language and functions they use. ByteScout BarCode Reader SDK helps with image preprocessing filters in C#. ByteScout BarCode Reader SDK is the SDK for reading of barcodes from PDF, images and live camera or video. Almost every common type like Code 39, Code 128, GS1, UPC, QR Code, Datamatrix, PDF417 and many others are supported. Supports noisy and defective images and docs. Includes optional documents splitter and merger for pdf and tiff based on found barcodess. Batch mode is supported for superior performance using multiple threads. Decoded values are easily exported to JSON, CSV, XML and to custom format.

You will save a lot of time on writing and testing code as you may just take the code below and use it in your application. Follow the instruction from the scratch to work and copy and paste code for C# into your editor. Enhanced documentation and tutorials are available along with installed ByteScout BarCode Reader SDK if you’d like to dive deeper into the topic and the details of the API.

On our website you may get trial version of ByteScout BarCode Reader SDK for free. Source code samples are included to help you with your C# application.

Try ByteScout BarCode Reader SDK today: Get 60 Day Free Trial or sign up for Web API

Program.cs
      
using System; using Bytescout.BarCodeReader; namespace ImagePreprocessingFilters { /// <summary> /// This exmaple demonstrates the use of image filters to improve the decoding or speed. /// </summary> class Program { static void Main() { using (Reader reader = new Reader("demo", "demo")) { // Set barcode type to find reader.BarcodeTypesToFind.Code128 = true; // WORKING WITH LOW CONTRAST BARCODE IMAGES // Add contrast adjustment for low-contrast image reader.ImagePreprocessingFilters.AddContrast(40); Console.WriteLine("Image {0}", "low-contrast-barcode.png"); FoundBarcode[] barcodes = reader.ReadFrom("low-contrast-barcode.png"); if (barcodes.Length == 0) Console.WriteLine("No barcode found!"); else foreach (FoundBarcode barcode in barcodes) Console.WriteLine("Found barcode {0} with value '{1}'", barcode.Type, barcode.Value); reader.ImagePreprocessingFilters.Clear(); Console.WriteLine(); // WORKING WITH NOISY BARCODE IMAGES // Add the median filter to lower the noise reader.ImagePreprocessingFilters.AddMedian(); Console.WriteLine("Image {0}", "noisy-barcode.png"); /* ----------------------------------------------------------------------- NOTE: We can read barcodes from specific page to increase performance. For sample please refer to "Decoding barcodes from PDF by pages" program. ----------------------------------------------------------------------- */ barcodes = reader.ReadFrom("noisy-barcode.png"); if (barcodes.Length == 0) Console.WriteLine("No barcode found!"); else foreach (FoundBarcode barcode in barcodes) Console.WriteLine("Found barcode {0} with value '{1}'", barcode.Type, barcode.Value); reader.ImagePreprocessingFilters.Clear(); Console.WriteLine(); // WORKING WITH DENSE AND ILLEGIBLE BARCODES // Add the scale filter to enlarge the barcode to make gaps between bars more distinguishable reader.ImagePreprocessingFilters.AddScale(2d); // enlarge twice Console.WriteLine("Image {0}", "too-dense-barcode.png"); barcodes = reader.ReadFrom("too-dense-barcode.png"); if (barcodes.Length == 0) Console.WriteLine("No barcode found!"); else foreach (FoundBarcode barcode in barcodes) Console.WriteLine("Found barcode {0} with value '{1}'", barcode.Type, barcode.Value); reader.ImagePreprocessingFilters.Clear(); Console.WriteLine(); // REMOVE EMPTY MARGINS FROM IMAGE TO SPEED UP THE PROCESSING // Add the crop filter to cut off empty margins from the image. // This will not improve the recognition quality but may speed up the processing // if you enabled multiple barcode types to search. reader.ImagePreprocessingFilters.AddCropDark(); Console.WriteLine("Image {0}", "barcode-with-large-margins.png"); barcodes = reader.ReadFrom("barcode-with-large-margins.png"); if (barcodes.Length == 0) Console.WriteLine("No barcode found!"); else foreach (FoundBarcode barcode in barcodes) Console.WriteLine("Found barcode {0} with value '{1}'", barcode.Type, barcode.Value); reader.ImagePreprocessingFilters.Clear(); Console.WriteLine(); } Console.WriteLine("Press any key to exit.."); Console.ReadKey(); } } }

Try ByteScout BarCode Reader SDK today: 60 Day Free Trial (on-premise version) or sign up for Web API (on demand version)

VIDEO

ON-PREMISE VERSION

Get 60 Day Free Trial or Visit ByteScout BarCode Reader SDK page

Explore ByteScout BarCode Reader SDK documentation

WEB API

Sign Up for free Web API key

Explore Web API Documentation

Tutorials:

prev
next