ByteScout Barcode Reader SDK - C# - Image Preprocessing Filters - ByteScout
Announcement
Our ByteScout SDK products are sunsetting as we focus on expanding new solutions.
Learn More Open modal
Close modal
Announcement Important Update
ByteScout SDK Sunsetting Notice
Our ByteScout SDK products are sunsetting as we focus on our new & improved solutions. Thank you for being part of our journey, and we look forward to supporting you in this next chapter!

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.

On-demand (REST Web API) version:
 Web API (on-demand version)

On-premise offline SDK for Windows:
 60 Day Free Trial (on-premise)

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(); } } }

ON-PREMISE OFFLINE SDK

60 Day Free Trial or Visit ByteScout BarCode Reader SDK Home Page

Explore ByteScout BarCode Reader SDK Documentation

Explore Samples

Sign Up for ByteScout BarCode Reader SDK Online Training

ON-DEMAND REST WEB API

Get Your API Key

Explore Web API Docs

Explore Web API Samples

VIDEO

ON-PREMISE OFFLINE SDK

60 Day Free Trial or Visit ByteScout BarCode Reader SDK Home Page

Explore ByteScout BarCode Reader SDK Documentation

Explore Samples

Sign Up for ByteScout BarCode Reader SDK Online Training

ON-DEMAND REST WEB API

Get Your API Key

Explore Web API Docs

Explore Web API Samples

Tutorials:

prev
next