Detects the potential barcode areas on a bitmap.
#include "l_bitmap.h"
L_LTIMGCOR_API L_INT L_FindBarcodeCandidateAreas(pBitmap, pOptions, pFoundAreas)
Pointer to the bitmap handle referencing the bitmap to detect the barcode areas.
Pointer to a structure that contains the options to be used in detecting the barcode areas.
Pointer to a structure to be updated with the detected barcode candidate areas.
| Value | Meaning |
|---|---|
| SUCCESS | The function was successful. |
| < 1 | An error occurred. Refer to Return Codes. |
This function is useful for images that have a barcode but one that is poor quality by returning the barcode bounds and confidence.
This will also provide speedup by using the bounds of the candidates to pass to the L_BarCodeRead on the entire bitmap.
When the detected barcode candidate areas specified by pFoundAreas is no longer needed, free it by calling L_FreeBarcodeCandidateAreas.
Win32, x64, Linux.
This example processes a bitmap to find potential barcode candidates and gives a confidence value for each area.
L_INT L_FindBarcodeCandidateAreasExample(L_VOID){L_INT nRet;/* Bitmap handle to hold the loaded image. */BITMAPHANDLE LeadBitmap;FIND_BARCODE_CANDIDATE_AREAS_OPTIONS candidateOptions = { 0 };BARCODE_CANDIDATE_AREAS candidates;pBARCODEDATA pBarcodeData = NULL;L_INT nCandidates;/* Load the bitmap, keeping the bits per pixel of the file the same */nRet = L_LoadBitmap(MAKE_IMAGE_PATH(L_TEXT("barcode2.tif")), &LeadBitmap, sizeof(BITMAPHANDLE), 24, ORDER_BGR, NULL, NULL);if (nRet != SUCCESS)return nRet;candidateOptions.uStructSize = sizeof(FIND_BARCODE_CANDIDATE_AREAS_OPTIONS);candidateOptions.uUnits = BARCODE_CANDIDATE_AREAS_USE_PIXELS;candidateOptions.BackgroundColor = RGB(255, 255, 255);candidateOptions.BarcodeColor = RGB(0, 0, 0);candidates.uStructSize = sizeof(BARCODE_CANDIDATE_AREAS);/* Finds potential barcodes */nRet = L_FindBarcodeCandidateAreas(&LeadBitmap, &candidateOptions, &candidates);if (nRet != SUCCESS)return nRet;/* Number of barcode candidate areas */nCandidates = candidates.AreasCount;L_BarCodeInit(BARCODES_QR_READ);// Loop through the candidates and read the barcode while storing the datafor (int n = 0; n < nCandidates; n++){L_BarCodeRead(&LeadBitmap, &candidates.Areas[n].Bounds, BARCODE_QR_CODE, BARCODE_SCANLINES_PER_PIXELS, NULL, 0, NULL, NULL, NULL, &pBarcodeData, sizeof(BARCODEDATA));}// Free memoryL_FreeBarcodeCandidateAreas(&candidates);L_BarCodeFree(&pBarcodeData);L_BarCodeExit();if (LeadBitmap.Flags.Allocated)L_FreeBitmap(&LeadBitmap);return nRet;}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
