CARMEN® Application Programming Interface and Software Development Kit

Applications which offer Number Plate Recognition functionalities utilise the number plate recognition capabilities and functions of a Number Plate Recognition Engine.

The Number Plate Recognition Engine (the core recognition module) has an Application Programming Interface (API), which is a series of functions that the application program can use to make the LPR Engine do the difficult work of recognition. It provides an interface between the processes of the application and the core image recognition tasks of license plate recognition.

Automatic License Plate Recognition
The Application and the Number Plate Recognition Engine

In order to work with the API - to develop applications using the functions offered by the API - software developers need proper documentation, sample codes and program tools for the API. The collection of this documentation, set of programs and tools are called Software Development Kit (SDK).

The License Plate Recognition Software Development Kit includes everything developers need to write, build, test, and deploy license plate recognition enabled applications.

The basic and essential part of the SDK is the documentation of the API. The documentation contains the exact description of the definitions, functions and variables of the API.

For demonstration purposes we show here a part of the SDK of the CARMEN® License Plate Recognition Engine of ARH Inc.

The native CARMEN® API provides interface using the C++ programming language to the recognition services of the CARMEN® Recognition Engine.

The API contains a C++ function named cm_findfirst which is responsible for finding and reading the first plate from an image (as there may be more than one).

Below is the documentation of this cm_findfirst function as it can be found in the CARMEN® SDK.

cm_findfirst By calling the cm_findfirst function the application can read a number plate from an image. The function returns the character tips of the number plate, and the text of the plate in ASCII and Unicode string format.
declaration int cm_findfirst(
    gxHANDLE  hanpr,
    const gxIMAGE*  pimage,
    cmNP**  panprresult
The gxHANDLE value retrieved by the gx_openmodule function of the gxsd module.
Points to the gxIMAGE structure which contains the image to be scanned for license plates.
Points to the cmNP* pointer which receives the data of the found license plate. The panprresult pointer is allowed to be 0 or the cmNP* pointer retrieved by a previous call of one of the cm_findfirst, cm_findnext or cm_format functions. In both cases the CMANPR module allocates enough memory space for the result if necessary. The application has to free this pointer. If the function returns NULL for the *panprresult pointer it means that no plate is found. (See later the detailed description of this structure.)
Copyright © 1993-2010 by ARH Inc.

All functions, definitions and variables of the CARMEN® API have the same style of description.

In order to help development work (reduce development time and costs) the SDK should provide well structured sample programs in source code.

The CARMEN® SDK provides a very simple, still fully functional sample program in C++. The ready-to-compile sample program captures an image from the video source (this is done by calling the functions of a separate Video Capture Module), reads the license plate from the captured digital image and outputs the result(s) on the screen.

Below is the sample1.cpp C++ source code of the sample1.exe demo program of the CARMEN® SDK.

CARMEN<sup>®</sup> SDK sample
Copyright(C) 2008 by ARH Inc.