C++ 1D and 2D Barcode Library
For 1D (barcode) and 2D (areacode) decoding and encoding.
____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____
||o |||p |||e |||n |||b |||a |||r |||c |||o |||d |||e ||
||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__||
|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|
This repository contains the OpenBarcode source files for libopenbarcode. It solely depends on OpenCV 3.
Written in C++11, this library is intended to be cross-platform; Mac, Windows, iOS, Android, etc. C++ Unit testing with GoogleTest.
For all 1D barcodes, the detectors works on bar-detection and then bar-clustering. All the 2D areacodes have their own distinct detector as these distinguish themselves generally by having their own markers. Each detected candidate will be converted into a bit or byte array that is fed into the decoder.
For an open sorce barcode library, this one distinguishes itself by the assumption that you are actually scanning a barcode 'straight', that means we do not assume large perspective or exotic spherical image transformations. We assume your camera is fairly parallel to the barcode surface, while it can be anywhere in the image and it can be rotated. In short, the detector is rotation invariant, scale invariant and rotation invariant. And it can handle only very little shear, perspective and spherical distortion. This should be good for almost all use cases, except when you are trying to capture a barcode with a fisheye lens that's pasted on the outside of a pingpong ball. Although in the latter case the two distortions might cancel eachother out.
Assumptions:
The decoder takes an array of bits and bytes as detected by a detector, and tries to decodes the data into the humanly readable format, with proper validation and error correction (if applicable).
@TODO
TABLE HERE @TODO
1D: Code39 ?Code128
2D: Datamatrix QR Code
##License MIT