VintaSoft Barcode .NET SDK 15.0: Documentation for .NET developer
In This Topic
    How to read barcodes from color image with poor quality?
    In This Topic
    There are 2 ways possible:

    Here is C#/VB.NET code that demonstrates how to detect barcodes in a color image with difficult-to-locate threshold.
    public static void TestScanWithIterationsCode128orDataMatrix(string fileName)
    {
        // recognize one Code 128 or DataMatrix barcode from 300 to 600 threshold (20 iterations).
        ScanWithIterations(fileName, Vintasoft.Barcode.BarcodeType.Code128 | Vintasoft.Barcode.BarcodeType.DataMatrix, 1, 20, 300, 600);
    }
    
    
    public static void ScanWithIterations(
        string fileName,
        Vintasoft.Barcode.BarcodeType barcodes,
        int expectedBarcodes,
        int iterationCount,
        int minThreshold,
        int maxThreshold)
    {
        // create a BarcodeReader object
        using (Vintasoft.Barcode.BarcodeReader reader = new Vintasoft.Barcode.BarcodeReader())
        {
            // set barcode reader settings
            reader.Settings.ScanBarcodeTypes = barcodes;
            reader.Settings.ExpectedBarcodes = expectedBarcodes;
            reader.Settings.ThresholdMode = Vintasoft.Barcode.ThresholdMode.Iterations;
            reader.Settings.ThresholdIterations = iterationCount;
            reader.Settings.ThresholdMin = minThreshold;
            reader.Settings.ThresholdMax = maxThreshold;
    
            // read barcodes
            Vintasoft.Barcode.IBarcodeInfo[] barcodesInfo = reader.ReadBarcodes(fileName);
    
            // if barcodes are not detected
            if (barcodesInfo.Length == 0)
            {
                System.Console.WriteLine("No barcodes found.");
            }
            // if barcodes are detected
            else
            {
                // get information about extracted barcodes
                for (int i = 0; i < barcodesInfo.Length; i++)
                {
                    Vintasoft.Barcode.IBarcodeInfo inf = barcodesInfo[i];
                    System.Console.WriteLine(string.Format("[{0}] {1} (Threshold: {2})", inf.BarcodeType,
                                                    inf.Value, inf.Threshold));
                }
            }
        }
    }
    
    Public Shared Sub TestScanWithIterationsCode128orDataMatrix(fileName As String)
        ' recognize one Code 128 or DataMatrix barcode from 300 to 600 threshold (20 iterations).
        ScanWithIterations(fileName, Vintasoft.Barcode.BarcodeType.Code128 Or Vintasoft.Barcode.BarcodeType.DataMatrix, 1, 20, 300, 600)
    End Sub
    
    
    Public Shared Sub ScanWithIterations(fileName As String, barcodes As Vintasoft.Barcode.BarcodeType, expectedBarcodes As Integer, iterationCount As Integer, minThreshold As Integer, maxThreshold As Integer)
        ' create a BarcodeReader object
        Using reader As New Vintasoft.Barcode.BarcodeReader()
            ' set barcode reader settings
            reader.Settings.ScanBarcodeTypes = barcodes
            reader.Settings.ExpectedBarcodes = expectedBarcodes
            reader.Settings.ThresholdMode = Vintasoft.Barcode.ThresholdMode.Iterations
            reader.Settings.ThresholdIterations = iterationCount
            reader.Settings.ThresholdMin = minThreshold
            reader.Settings.ThresholdMax = maxThreshold
    
            ' read barcodes
            Dim barcodesInfo As Vintasoft.Barcode.IBarcodeInfo() = reader.ReadBarcodes(fileName)
    
            ' if barcodes are not detected
            If barcodesInfo.Length = 0 Then
                System.Console.WriteLine("No barcodes found.")
            Else
                ' if barcodes are detected
                ' get information about extracted barcodes
                For i As Integer = 0 To barcodesInfo.Length - 1
                    Dim inf As Vintasoft.Barcode.IBarcodeInfo = barcodesInfo(i)
                    System.Console.WriteLine(String.Format("[{0}] {1} (Threshold: {2})", inf.BarcodeType, inf.Value, inf.Threshold))
                Next
            End If
        End Using
    End Sub