SDK для распознавания номерных знаков

Материал из VIT company
Перейти к навигации Перейти к поиску

Введение


Комплект разработчика VIT AutoSDK (SDK) предназначен для распознавания автомобильных регистрационных номеров. SDK представляет собой набор динамических библиотек и заголовочных файлов С/С++, необходимых для использования SDK в разработках прикладного уровня.


В зависимости от поставки, SDK может быть использован на машинах семейства x86 (32/64 бит) под управлением операционных систем семейства Unix (например, FreeBSD, Mac OS X, Linux) и Microsoft Windows (например, 2000, 2003, XP, Vista, Seven).


Максимальное количество работающих принципалов , а также количество обрабатываемых кадров за секунду зависит от состава поставки.


Динамические библиотеки SDK защищены и не могут быть использованы без специального аппаратного ключа входящего в состав поставки.

Состав продукта

В состав AutoSDK входит:

  • файловый пакет AutoSDK;
  • аппаратный ключ (разрешающий работу исполняемых файлов SDK);


<AutoSDK>

samples ;; примеры использования SDK
doc
ru
AutoSDK.pdf ;; документация разработчика
en
AutoSDK.pdf
templates ;; изображения типов номерных пластин (шаблоны)
opt
include ;; заголовочные файлы
Vodi ;; заголовочные файлы SDK
Bo ;; вспомогательная библиотека
bin [Unix] ;; программы
vpwfetch ;; читает автомобильные номера
bin [Windows] ;; программы, динамические библиотеки
vpwfetch.exe ;; читает автомобильные номера
Bo.dll ;; вспомогательная библиотека
Bo_g.dll ;; дебаг вариант
Vodi.dll
Vodi_g.dll ;; дебаг вариант
lib [Unix] ;; объектные файлы, динамические и архивные библиотеки
<PFX>Bo<SFX> ;; вспомогательная библиотека
<PFX>Bo_g<SFX> ;; дебаг вариант
<PFX>Vodi<SFX>
<PFX>Vodi_g<SFX> ;; дебаг вариант
lib [Windows] ;; объектные файлы, стабовые и архивные библиотеки
Bo.lib ;; стабовая библиотека Bo.dll
Bo_g.lib ;; дебаг вариант
Vodi.lib ;; стабовая библиотека Vodi.dll
Vodi_g.lib ;; дебаг вариант
libexec ;; библиотеки с неявной линковкой
HASP


<PFX> - системно-зависимый префикс динамических библиотек (например, lib).


<SFX> - системно-зависимый суффикс динамических библиотек включающий версию файла и его расширение (например, .so.2.4.0; 2.4.0.dylib, -2_4_0.dll)

Установка продукта


Мы даем только рекомендации по установке, основанные на наших традициях. Вы можете использовать другие подходы к установке, которые будут вам удобнее, основываясь на нашем примере.


Пусть AUTOSDK – путь к пакету, который вы хотите установить (о структуре пакета смотрите раздел «Состав продукта»), а INSTALLDIR - путь к директории, куда вы хотите установить продукт.

Установка под Windows

1. Необходимо скопировать в директорию INSTALLDIR содержимое AUTOSDK.
2. Добавить в пути поиска заголовочных файлов для C/C++ препроцессора путь к INSTALLDIR\opt\include. Используя Microsoft Visual Studio этоможносделатьвразделе «Additional Include Directories».
3. Добавить в пути поиска библиотек для линкера путь к INSTALLDIR\opt\lib. Используя Microsoft Visual Studio это можно сделать в разделе «Additional Library Directories».
4. Создать или добавить в переменную окружения PATH путь к INSTALLDIR\opt\bin.
5. Создать или добавить в переменную окружения AORP_MODULE_PATH путь к INSTALLDIR\opt\libexec\aopr\modules.

Первое приложение

Загрузка модулей


Перед началом работы с SDK необходимо загрузить модуля.

static bo_status_t _t_load_requireds(struct aorp_error *anErrPtr)
{
	/*
	 * Будем загружать 4 базовых модуля:
	 * vpwf - базовый функционал
	 * vpwc - дополнительный функционал
	 * vipaz - распознаватели
	 * vpwi - описания номерных пластин
	*/
	static charconst *_s_requireds[] = {
		"vpwf-ia616oa245", "vpwc-f0p1", "vipaz-mlnn", "vipaz-gm", "vpwi-ru",
		NULL
	};

	bo_status_t status;
	charconst *name, **rqp;

	for (rqp = _s_requireds; NULL != (name = *rqp); ++rqp) {
		status = AorpMldLoad(name, NULL, 0, 0, anErrPtr);
		if (BoS_FAILURE(status)) {
			return (status);
			/* NOTREACHED */
		}
	}

	return (BoS_NORMAL);
}

Создание принципала


Чтобы начать выполнять распознавание автомобильных номеров, необходимо создать/открыть экземпляр принципала. При его создании можно указать некоторые параметры его работы.

static aorp_object_t _t_princ_open(struct aorp_error *anErrPtr)
{
	struct vodi_vpw_princ_param defaults = {
		/* .enable = */true,
		/* .thread_max = */0,
		/* .image_width = */100,
		/* .image_height = */100,
		/* .image_brightnes = */0,
		/* .image_contrast = */0,
		/* .image_blur = */13,
		/* .image_treshold = */21,
		/* .image_reversed = */false,
		/* .image_angle = */0,
		/* .analysed_zone = */ {0},
		/* .analysed_zone_count = */0,
		/* .plate_size_max = */200,
		/* .plate_size_min = */45,
		/* .plate_inverse_analyse = */true,
		/* .plate_probability_min = */15,
		/* .plate_star_max = */1,
		/* .md_enable = */false,
		/* .md_cell_size = */0,
		/* .md_threshold = */0,
		/* .md_square_min = */0,
		/* .md_mask = */NULL,
		/* .md_mask_h_size = */0,
		/* .md_mask_v_size = */0,
		/* .dynamic_enable = */false
	};
	aorp_object_t retval;

	VpwprincOpen(retval, 0, NULL, &defaults, anErrPtr);
	return (retval);
}

int main(int argc, char *argv[])
{
	aorp_object_t principal;
	struct aorp_error *err;

	...

	principal = _t_princ_open(err);

	...

	(void)AorpRelease(principal, 0, NULL); /* отпускаемпринципал */

	...
}

Конфигурация


После того как создали принципал можно настроить его к работе. В данном примере конфигурации указывается необходимость распознавать номерные знаки России. Ознакомиться с другими параметрами можно в разделе «Описание функционала».

static bo_status_t
_t_princ_configure(aorp_object_t aPrincipal, struct aorp_error *anErrPtr)
{
	bo_status_t status;
	struct vodi_vpw_country_id tmpl = {
		/* .code = */643/* ru */,
		/* .id = */0,
		/* .sub_id = */0
	};

	assert(NULL != aPrincipal);

	status = VodiprincSetparam(
		aPrincipal, anErrPtr, VodiCTL_VPW_PLATE_TEMPLATE, &tmpl, 1
	);
	if (BoS_FAILURE(status)) {
		return (status);
		/* NOTREACHED */
	}
	
	/* другиепараметры */

	status = VodiprincApplyparam(result, anErrPtr);
	return (status);
}

Распознавание


Теперь все готово к распознаванию. Для этого нужно подавать изображение, запакованное в структуру vodi_image, в операцию VodiprincProcess. Каждая строка изображения должна быть выровнена на 4 байта. Также необходимо подготовить структуру vodi_vpw_optionsс дополнительными опциями (последовательный номер кадра, его временная метка и его размер). Если размер изображения изменился, то нужно еще установить параметры VodiCTL_VPW_IMAGE_WIDTHиVodiCTL_VPW_IMAGE_HEIGHTв актуальные значения.


В случае обнаружения автомобильных номеров на изображении операция вернет ансамбль результатов.

static bo_status_t
_t_princ_recognize(
	aorp_object_t aPrincipal,
	struct vodi_image *anImage,
	size_t anAnalizeZonec,
	struct vodi_rect const anAnalizeZonev[],
	struct vodi_ucontext *anUserCtx,
	aorp_object_t anInputEnsemble,
	aorp_object_t *anOutputEnsemblePtr,
	struct aorp_error *anErrPtr
	)
{
	bo_status_t status;
	unsigned width, height;
	struct vodi_vpw_options options;

	options.magic = VodiK_VPW_OPTIONS_WORK_MAGIC;
	options.img_seqnum = 0;
	options.img_timestamp = 0;
	options.imgsz.sz_width = width = anImage->img_width;
	options.imgsz.sz_height = height = anImage->img_height;
	
	status = VodiprincSetparam(
		aPrincipal, anErrPtr, VodiCTL_VPW_IMAGE_WIDTH, width
	);
	if (BoS_FAILURE(status)) {
		return (status);
		/* NOTREACHED */
	}
	status = VodiprincSetparam(
		aPrincipal, anErrPtr, VodiCTL_VPW_IMAGE_HEIGHT, height
	);
	if (BoS_FAILURE(status)) {
		return (status);
		/* NOTREACHED */
	}
	status = VodiprincApplyparam(aPrincipal, anErrPtr);
	if (BoS_FAILURE(status)) {
		return (status);
		/* NOTREACHED */
	}

	status = VodiprincProcess(
		aPrincipal, anImage, anAnalizeZonec, anAnalizeZonev,
		anUserCtx, anInputEnsemble, anOutputEnsemblePtr,
		&options, anErrPtr
	);
	return (status);
}

Обработка результата распознавания


Обработка результатов начинается с чтения из ансамбля.

static bo_status_t
_t_ensemble_handle(aorp_object_t anEnsemble, struct aorp_error *anErrPtr)
{
	bo_status_t status;
	size_t resc;
	aorp_object_t resv[256], *resp;
	bo_index_t from;
	_Bool overflow;

	assert(NULL != anEnsemble);

	from = 0;
	do {
		status = VodiensGet(
			anEnsemble, from, -1, __myc_namembs(resv), resv, anErrPtr
		);
		if (!BoS_DOBRE(status))
			break;

		resc = (size_t)status;
		overflow = false;
		if (__myc_namembs(resv) < resc) {
			resc = __myc_namembs(resv);
			from += (bo_index_t)resc;
			overflow = true;
		}

		resp = resv;
		do {
			status = _t_result_handle(*resp++, anErrPtr);
			if (BoS_FAILURE(status)) {
				return (status);
				/* NOTREACHED */
			}
		}
		while (--resc);
	}
	while (overflow);

	return (BoS_NORMAL);
}


Для каждого результата из ансамбля применяем следующую функцию. Функция читает информацию из результата в структуру vodi_vpw_result_info,используя для этого операцию VodiresFetchinfo. После завершения работы с прочитанной информацией её необходимо разрушить, используя функцию VodiResultInfoDestroy.

static bo_status_t
_t_result_handle(aorp_object_taResult, structaorp_error *anErrPtr)
{
	bo_status_tstatus;
	struct vodi_result_info *info;
	struct vodi_vpw_result_info plateinfo;

	assert(NULL != aResult);

	info = (struct vodi_result_info *)&plateinfo;
	VODI_RESULT_INFO_TYPE(info) = VodiK_VPW_RESULT_INFO;
	status = VodiresFetchinfo(aResult, info, anErrPtr);
	if (BoS_FAILURE(status)) {
		return (status);
		/* NOTREACHED */
	}

	status = _t_plateinfo_handle(&plateinfo, anErrPtr);

	VodiResultInfoDestroy(info);

	return (status);
}


Для прочитанной информации применяем еще одну функцию, в которой можно что-то сделать с полученным результатом.

static bo_status_t
_t_plateinfo_handle(
	struct vodi_vpw_result_info *anInfo,
	struct aorp_error *anErrPtr
	)
{
	struct vodi_plate_info_spec *pis;
	struct vodi_plate *plate;

	assert(NULL != anInfo);

	pis = VODI_RESULT_INFO_SPEC(anInfo, plate);
	plate = &pis->pis_plate_variantv[0];

	/* что-то делать */

	return (BoS_NORMAL);
}

Описание функционала

VpwprincOpen

ИМЯ
VpwprincOpen - открыть/создать принципал.
СИНТАКСИС
#include <Vodi/objects/Vpwprinc.h>

void
__attribute__((nonnull(1,4))
VpwprincOpen(
	aorp_object_t &aResultRef,
	aorp_opflags_t Flags /* = 0 */,
	bo_pointer_t aMemory /* = NULL */,
	struct vodi_vpw_princ_param *aParm,
	struct aorp_error *anErrPtr /* = NULL */
	);
ОПИСАНИЕ
Функция VpwprincOpen открывает принципал и устанавливает на него указатель aResultRef.
Аргумент Flags дает возможность управлять процессом конструирования объекта. По умолчанию можно передавать 0.
Аргументом aMemory можно передать указатель на память, в которой будет создан объект. По умолчанию можно передавать NULL. В этом случае конструктор объекта сам выделит память под объект.
Через аргумент aParm нужно передать начальные параметры работы принципала. Более детальную информацию о параметрах можно получить смотря описание функции VodiprincSetparam.
Структура vodi_vpw_princ_param содержит следующие поля:
enable Эквивалент VodiCTL_VPW_PRINCIPAL_ENABLE.
thread_max Максимально количество потоков распознавания, которые при необходимости создаются в процессе работы. Значение 0 эквивалентно 1 (1 поток). Задавать значение больше чем количество ядер процессора с учетом Hyper Threading не рекомендуется.
image_width Эквивалент VodiCTL_VPW_IMAGE_WIDTH.
image_height Эквивалент VodiCTL_VPW_IMAGE_HEIGHT.
image_brightnes Эквивалент VodiCTL_VPW_IMAGE_BRIGHTNES.
image_contrast Эквивалент VodiCTL_VPW_IMAGE_CONTRAST.
image_blur Эквивалент VodiCTL_VPW_IMAGE_BLUR.
image_treshold Эквивалент VodiCTL_VPW_IMAGE_THRESHOLD.
image_reversed Не используется (depricated). Должен быть установлен в 0.
image_angle Эквивалент VodiCTL_VPW_IMAGE_ANGLE.
analysed_zone Эквивалент VodiCTL_VPW_IMAGE_ANALYSE_ZONE.
analysed_zone_count Актуальное количество элементов в массиве analysed_zone.
plate_size_max Эквивалент VodiCTL_VPW_PLATE_SIZE_MAX.
plate_size_min Эквивалент VodiCTL_VPW_PLATE_SIZE_MIN.
plate_inverse_analyse Эквивалент VodiCTL_VPW_PLATE_INVERSE_ANALYSE.
plate_probability_min Эквивалент VodiCTL_VPW_PLATE_PROBABILITY_MIN.
plate_star_max Эквивалент VodiCTL_VPW_PLATE_STAR_MAX.
md_enable Не используется (depricated). Должен быть установлен в 0.
md_cell_size Не используется (depricated). Должен быть установлен в 0.
md_threshold Не используется (depricated). Должен быть установлен в 0.
md_square_min Не используется (depricated). Должен быть установлен в 0.
md_mask Не используется (depricated). Должен быть установлен в NULL.
md_mask_h_size Не используется (depricated). Должен быть установлен в 0.
md_mask_v_size Не используется (depricated). Должен быть установлен в 0.
dynamic_enable Эквивалент VodiCTL_VPW_DYNAMIC_ENABLE.
log_settings Эквивалент VodiCTL_VPW_LOG_SETTINGS.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
В случае успеха функция VpwprincOpen устанавливает указатель aResultRef на созданный объект. В противном случае — функция устанавливает указатель aResultRef в NULL как статус ошибки и заполняет её описание в структуру указанную аргументом anErrPtr.

AorpRetain

ИМЯ
AorpRetain - захватить АОРП объект.
СИНТАКСИС
#include <Bo/services/Ucntl.h>

ssize_t
__attribute__((nonnull(1))
AorpRetain(
	aorp_object_t aThis,
	struct aorp_error *anErrPtr /* = NULL */
	);
ОПИСАНИЕ
Функция AorpRetain захватывает АОРП объект переданный аргументом aThis. В результате возвращает получившееся количество ссылок на объект.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
В случае успеха функция AorpRetain возвращает значение больше или равно 0. В противном случае - функция возвращает отрицательное значение как статус ошибки и заполняет её описание в структуру указанную аргументом anErrPtr.

AorpRelease

ИМЯ
AorpRelease - отпустить АОРП объект.
СИНТАКСИС
#include <Bo/services/Ucntl.h>

ssize_t
__attribute__((nonnull(1))
AorpRelease(
	aorp_object_t aThis,
	aorp_opflags_t Flags /* = 0 */,
	struct aorp_error *anErrPtr /* = NULL */
	);
ОПИСАНИЕ
Функция AorpRelease отпускает АОРП объект переданный аргументом aThis.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
В случае успеха функция AorpRelease возвращает оставшееся количество ссылок на объект. Если функция вернула 0, то значит, в результате её работы объект был уничтожен. В противном случае - функция возвращает отрицательное значение как статус ошибки и заполняет её описание в структуру указанную аргументом anErrPtr.

VodiprincGetparam

ИМЯ
VodiprincGetparam -- получить параметр.
СИНТАКСИС
#include <Vodi/services/Vodiprinc.h>

bo_status_t
__attribute__((nonnull(1))
VodiprincGetparam(
	aorp_object_t aThis,
	struct aorp_error *anErrPtr /* = NULL */,
	int aParam,
	...
	);
ОПИСАНИЕ
Функция VodiprincGetparam возвращает значение параметра, указанного аргументом aParam. В зависимости от типа параметра, в функцию могут быть переданы дополнительные указатели, в которые будут записаны актуальные значения параметра.
Для более детального ознакомления с доступными параметрами смотрите раздел для функции VodiprincSetparam.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
В случае успеха функция VodiprincGetparam возвращает актуальное значение параметра, которое больше или равно 0. В зависимости от типа параметра, в функцию могут быть переданы дополнительные указателя, в которые будут записаны актуальные значения параметра.
В противном случае - функция возвращает отрицательное значение как статус ошибки и заполняет её описание в структуру указанную аргументом anErrPtr.

VodiprincSetparam

ИМЯ
VodiprincSetparam - установить параметр.
СИНТАКСИС
#include <Vodi/services/Vodiprinc.h>

bo_status_t
__attribute__((nonnull(1))
VodiprincSetparam(
	aorp_object_t aThis,
	struct aorp_error *anErrPtr /* = NULL */,
	int aParam,
	...
	);
ОПИСАНИЕ
Функция VodiprincSetparam устанавливает значение параметра, указанного параметром aParam. В зависимости от типа параметра, в функцию могут быть переданы дополнительные аргументы для установки значения.
Доступные параметры:
VodiCTL_VPW_PRINCIPAL_ENABLE Включить/выключить распознавание. Тип - int(boolean).
VodiCTL_VPW_PLATE_INVERSE_ANALYSE Включить/выключить инверсный анализ изображения. Тип - int(boolean).
VodiCTL_VPW_PLATE_PROBABILITY_MIN Минимальное значение специальной характеристики номера, чтобы быть таковым. Тип - unsigned.
VodiCTL_VPW_PLATE_STAR_MAX Максимальное количество не распознанных символов на номере, чтобы быть таковым. Тип - unsigned.
VodiCTL_VPW_PLATE_SIZE_MAX Максимальная ширина номера (в пикселях), чтобы быть таковым. Тип - unsigned.
VodiCTL_VPW_PLATE_SIZE_MIN Минимальная ширина номера (в пикселях), чтобы быть таковым. Тип - unsigned.
VodiCTL_VPW_ PLATE_EXTRA_ANGLE_ANALYSE Включить/выключить алгоритм учета перспективы изображения номерной пластины. Тип - int(boolean).
VodiCTL_VPW_PLATE_FILTER_ROFACTOR Коэффициент при фильтрации номерной пластины по плотности изображения (первая стратегия). Тип - unsigned.
VodiCTL_VPW_ PLATE_FILTER_RODROPFACTOR Коэффициент при фильтрации номерной пластины по плотности изображения (вторая стратегия). Тип - unsigned.
VodiCTL_VPW_ PLATE_IMAGE_SCALE_FACTOR Коэффициент изменения размера изображения для дальнейшего поиска номерных пластин. Взаимоисключающий с параметром VodiCTL_VPW_PLATE_IMAGE_SIZE. Тип – structvodi_scale_factor *.
VodiCTL_VPW_PLATE_IMAGE_SIZE Необходимый размер изображения для дальнейшего поиска номерных пластин. Взаимоисключающий с параметром VodiCTL_VPW_ PLATE_IMAGE_SCALE_FACTOR. Тип - struct vodi_size *.
VodiCTL_VPW_PLATE_TEMPLATE Включить/выключить шаблон,указываемый первым аргументом. Второй аргумент определяет, что нужно сделать (0 - выключить, !0 - включить). Тип первого аргумента – struct vodi_vpw_country_id *. Тип второго аргумента - int(boolean).
VodiCTL_VPW_PLATE_FILTER_SYMCOUNT Включить/выключить алгоритм простого фильтра номерной пластины по минимальному количеству возможных символов на ней. Тип - int(boolean).
VodiCTL_VPW_IMAGE_WIDTH Ширина (в пикселях) текущего анализируемого изображения. Тип - unsigned.
VodiCTL_VPW_IMAGE_HEIGHT Высота (в пикселях) текущего анализируемого изображения. Тип - unsigned.
VodiCTL_VPW_IMAGE_BRIGHTNES Корректировка яркости изображения перед анализом. Используется в случае недостаточной или избыточной яркости изображения. Тип – int. Диапазон значений –[-100, 100].
VodiCTL_VPW_IMAGE_CONTRAST Корректировка контраста изображения перед анализом. Используется в случае недостаточного или избыточного контраста. Тип – int. Диапазон значений - [-100, 100].
VodiCTL_VPW_IMAGE_BLUR Рекомендуется использовать значение 13. Используется для внутренних потребностей. Тип – int.
VodiCTL_VPW_IMAGE_THRESHOLD Рекомендуется использовать значение 21. Порог бинаризации цветных пикселей в черно белые. Используется для внутренних потребностей. Тип – unsigned.
VodiCTL_VPW_IMAGE_ANALYSE_ZONE Массив зон распознавания, где предположительно появится номер. Тип первого аргумента– struct void_rect *. Тип второго аргумента – unsigned.
VodiCTL_VPW_IMAGE_AZONE_MASK Изображение-маска области анализа. Тип - struct vodi_image *.
VodiCTL_VPW_IMAGE_ANGLE Поворот исходного изображения на угол (т.е. все изображение поворачивается на угол, чтобы номерные пластины были горизонтально перед анализом). Тип – int. Диапазон значений - [-180, 180].
VodiCTL_VPW_DYNAMIC_ENABLE Включить/выключить режим «динамики». Тип - int(boolean).
VodiCTL_VPW_DYNAMIC_OUTPUT_TIMEOUT Минимально необходимое время (в микросекундах) наблюдения за номерной пластиной, чтобы выдать её пользователю. Тип - bo_usec_t.
VodiCTL_VPW_DYNAMIC_OUTPUT_PERIOD Период (в микросекундах) выдачи номерной пластины пользователю. Данный параметр имеет место только при установленном параметре VodiCTL_VPW_DYNAMIC_WITH_DUPLICATE. Тип - bo_usec_t.
VodiCTL_VPW_DYNAMIC_WITH_DUPLICATE Включить/выключить периодическую выдачу номерных пластин. Тип - int(boolean).
VodiCTL_VPW_ DYNAMIC_DURATION_WITHOUT_ACCESS Максимально допустимое время (в микросекундах) отсутствия наблюдения номерной пластины. В случае выхода за это время, номерная пластина считается потерянной и выдается пользователю с установленным флажком VodiF_RESULT_LOST. Тип - bo_usec_t.
VodiCTL_VPW_LOG_SETTINGS Включить/выключить запись в лог файл список всех параметров распознавания. Тип – int(boolean).
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
В случае успеха функция VodiprincSetparam возвращает значение больше или равно 0. В противном случае - функция возвращает отрицательное значение как статус ошибки и заполняет её описание в структуру указанную аргументом anErrPtr.

VodiprincApplyparam

ИМЯ
VodiprincApplyparam - применить параметры.
СИНТАКСИС
#include <Vodi/services/Vodiprinc.h>

bo_status_t
__attribute__((nonnull(1))
VodiprincApplyparam(
	aorp_object_t aThis,
	struct aorp_error *anErrPtr /* = NULL */
	);
ОПИСАНИЕ
Функция VodiprincApplyparam применяет установленные параметры функцией VodiprincSetparam.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
В случае успеха функция VodiprincApplyparam возвращает значение больше или равно 0. В противном случае - функция возвращает отрицательное значение как статус ошибки и заполняет её описание в структуру указанную аргументом anErrPtr.

VodiprincProcess

ИМЯ
VodiprincProcess - проанализировать изображение.
СИНТАКСИС
#include <Vodi/services/Vodiprinc.h>

bo_status_t
__attribute__((nonnull(1,2,7,8))
VodiprincProcess(
	aorp_object_t aThis,
	struct vodi_image *anImage,
	size_t anAnalizeZonec /* = 0 */,
	struct vodi_rect const anAnalizeZonev[] /* = NULL */,
	struct vodi_ucontext const *anUserCtx /* = NULL */,
	aorp_object_t anInputEnsemble /* = NULL */,
	aorp_object_t *anOutputEnsemblePtr,
	void *Options,
	struct aorp_error *anErrPtr /* = NULL */
	);
ОПИСАНИЕ
Функция VodiprincProcess производит анализ изображения передаваемого параметром anImage.
Можно указать прямоугольные области на изображении, где функция будет проводить анализ. Количество таких областей задается аргументом anAnalizeZonec, а указатель на подготовленный массив прямоугольников – аргументом anAnalizeZonev. Если передать в качестве количества областей значение 0 - то аргумент anAnalizeZonev игнорируется, а анализ будет проходить по всему изображению.
Через аргумент anUserCtx можно передать контекст пользователя, который будет связываться с каждым результатом анализа. Детальную информацию о контексте пользователя можно найти в разделе о struct vodi_ucontext.
Каждый результат анализа заносится в ансамбль, который можно передать аргументом anInputEnsemble. Если anInputEnsemble равен NULL – то для занесения результатов будет создан новый ансамбль.
Ансамбль с результатами анализа передается выходным аргументом anOutputEnsemblePtr.
Для анализа/поиска автомобильных регистрационных знаков требуется передать дополнительные параметры аргументом Options. В данном случае указатель должен быть на struct void_vpw_options. Детальную информацию о структуре параметров можно найти в соответствующем разделе.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
В случае успеха функция VodiprincProcess возвращает значение больше или равно 0. В противном случае - функция возвращает отрицательное значение как статус ошибки и заполняет её описание в структуру указанную аргументом anErrPtr.

VodiprincFlush

ИМЯ
VodiprincFlush – сбросить внутренние буфера.
СИНТАКСИС
#include <Vodi/services/Vodiprinc.h>

bo_status_t
__attribute__((nonnull(1,3))
VodiprincFlush(
	aorp_object_t aThis,
	aorp_object_t anInputEnsemble /* = NULL */,
	aorp_object_t *anOutputEnsemblePtr,
	struct aorp_error *anErrPtr /* = NULL */
	);
ОПИСАНИЕ
Функция VodiprincFlush сбрасывает внутренние буфера результатов анализа в режиме “динамика”.
Каждый результат из буфера заносится в ансамбль, который можно передать аргументом anInputEnsemble. Если anInputEnsemble равен NULL – то для занесения результатов будет создан новый ансамбль.
Ансамбль с результатами передается выходным аргументом anOutputEnsemblePtr.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
В случае успеха функцияVodiprincFlush возвращает значение больше или равно 0. В противном случае - функция возвращает отрицательное значение как статус ошибки и заполняет её описание в структуру указанную аргументом anErrPtr.

VodiensCount

ИМЯ
VodiensCount – количество результатов в ансамбле.
СИНТАКСИС
#include <Vodi/services/Vodiens.h>

ssize_t
__attribute__((nonnull(1))
VodiensCount(
	aorp_object_t aThis,
	struct aorp_error *anErrPtr /* = NULL */
	);
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
В случае успеха функцияVodiensCount возвращает количество результатов в ансамбле. В противном случае - функция возвращает отрицательное значение как статус ошибки и заполняет её описание в структуру указанную аргументом anErrPtr.

VodiensClear

ИМЯ
VodiensClear – почистить ансамбль.
СИНТАКСИС
#include <Vodi/services/Vodiens.h>

bo_status_t
__attribute__((nonnull(1))
VodiensClear(
	aorp_object_t aThis,
	struct aorp_error *anErrPtr /* = NULL */
	);
ОПИСАНИЕ
Функция VodiensClear очищает ансамбль, передаваемый аргументом aThis. При этом для всех результатов в ансамбле применяется функция AorpRelease.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
В случае успеха функцияVodiensClear возвращает значение больше или равно 0. В противном случае - функция возвращает отрицательное значение как статус ошибки и заполняет её описание в структуру указанную аргументом anErrPtr.

VodiensAdd

ИМЯ
VodiensAdd – добавить результат.
СИНТАКСИС
#include <Vodi/services/Vodiens.h>

bo_status_t
__attribute__((nonnull(1,2))
VodiensAdd(
	aorp_object_t aThis,
	aorp_object_t aResult,
	struct aorp_error *anErrPtr /* = NULL */
	);
ОПИСАНИЕ
Функция VodiensAdd добавляет результат, передаваемый аргументом aResult к ансамблю аргумента aThis. При этом для результата применяется функция AorpRetain.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
В случае успеха функция VodiensAdd возвращает значение больше или равно 0. В противном случае - функция возвращает отрицательное значение как статус ошибки и заполняет её описание в структуру указанную аргументом anErrPtr.

VodiensRemove

ИМЯ
VodiensRemove – забрать результат.
СИНТАКСИС
#include <Vodi/services/Vodiens.h>

bo_status_t
__attribute__((nonnull(1,3))
VodiensRemove(
	aorp_object_t aThis,
	bo_index_t anIndex,
	aorp_object_t *aResultPtr,
	struct aorp_error *anErrPtr /* = NULL */
	);
ОПИСАНИЕ
Функция VodiensRemove забирает результат из ансамбля.
Аргументом anIndex указывается порядковый номер результата в ансамбле (нумерация начинается с 0), который нужно забрать. Если передать отрицательное значение, то выбор результата будет с конца ансамбля.
Забранный результат записывается в выходной аргумент aResultPtr.
К забранному результату не применяется операции AorpRetain/AorpRelease.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
В случае успеха функция VodiensRemove возвращает значение больше или равно 0. В противном случае - функция возвращает отрицательное значение как статус ошибки и заполняет её описание в структуру указанную аргументом anErrPtr.

VodiensDelete

ИМЯ
VodiensDelete – удалить результат.
СИНТАКСИС
#include <Vodi/services/Vodiens.h>

bo_status_t
__attribute__((nonnull(1))
VodiensDelete(
	aorp_object_t aThis,
	bo_index_t anIndex,
	struct aorp_error *anErrPtr /* = NULL */
	);
ОПИСАНИЕ
Функция VodiensDelete удаляет результат из ансамбля.
Аргументом anIndex указывается порядковый номер результата в ансамбле (нумерация начинается с 0), который нужно удалить. Если передать отрицательное значение, то выбор результата будет с конца ансамбля.
К выбранному результату будет применена функция AorpRelease.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
В случае успеха функция VodiensDelete возвращает значение больше или равно 0. В противном случае - функция возвращает отрицательное значение как статус ошибки и заполняет её описание в структуру указанную аргументом anErrPtr.

VodiensGet

ИМЯ
VodiensGet – получить результаты.
СИНТАКСИС
#include <Vodi/services/Vodiens.h>

ssize_t
__attribute__((nonnull(1))
VodiensGet(
	aorp_object_t aThis,
	bo_index_t aFrom,
	bo_index_t aTo,
	size_t aCount,
	aorp_object_t aResultv[],
	struct aorp_error *anErrPtr /* = NULL */
	);
ОПИСАНИЕ
Функция VodiensGet выбирает результаты из ансамбля, передаваемого аргументом aThis.
Результаты выбираются в диапазоне указанном индексами [aFrom, aTo]. Если индекс имеет отрицательное значение, то значит, он указывает на элемент с конца ансамбля.
Аргументом aCount указывается максимальное количество результатов, которые можно записать в буфер aResultv. Если выбирается больше результатов чем можно записать, то это не приводит к ошибке.
К выбранным результатам не применяются операции AorpRetain/AorpRelease.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
В случае успеха функция VodiensGet возвращает выбранное количество результатов (может быть больше чем указано в аргументе aCount). В противном случае - функция возвращает отрицательное значение как статус ошибки и заполняет её описание в структуру указанную аргументом anErrPtr.

VodiensUnique

ИМЯ
VodiensUnique – уникальные результаты.
СИНТАКСИС
#include <Vodi/services/Vodiens.h>

ssize_t
__attribute__((nonnull(1,2))
VodiensUnique(
	aorp_object_t aThis,
	aorp_object_t aPrincipal,
	struct aorp_error *anErrPtr /* = NULL */
	);
ОПИСАНИЕ
Функция VodiensUnique оставляет только уникальные результаты в ансамбле, передаваемого аргументом aThis.
Аргумент aPrincipal должен указывать на принципал, с помощью которого будет производиться данная операция.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
В случае успеха функция VodiensUnique возвращает количество оставшихся результатов. В противном случае - функция возвращает отрицательное значение как статус ошибки и заполняет её описание в структуру указанную аргументом anErrPtr.

VodiensCombine

ИМЯ
VodiensCombine – объединить результаты.
СИНТАКСИС
#include <Vodi/services/Vodiens.h>

ssize_t
__attribute__((nonnull(1,2))
VodiensCombine(
	aorp_object_t aThis,
	aorp_object_t aPrincipal,
	int anWithMerge,
	size_t anEnsc,
	aorp_object_t anEnsv[],
	struct aorp_error *anErrPtr /* = NULL */
	);
ОПИСАНИЕ
Функция VodiensCombine объединяет ансамбли в один результирующий, передаваемый аргументом aThis.
Аргумент aPrincipal должен указывать на принципал, с помощью которого будет производиться данная операция.
В случае ненулевого значения аргумента anWithMerge, функция оставит в результате только уникальные результаты.
Количество и массив ансамблей к объединению задаются аргументами anEnsc и anEnsv соответственно. Результаты из данных ансамблей будут удалены.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
В случае успеха функция VodiensCombine возвращает количество оставшихся результатов. В противном случае - функция возвращает отрицательное значение как статус ошибки и заполняет её описание в структуру указанную аргументом anErrPtr.

VodiensCombine_v2

ИМЯ
VodiensCombine_v2 – объединить результаты.
СИНТАКСИС
#include <Vodi/services/Vodiens.h>

ssize_t
__attribute__((nonnull(1,2))
VodiensCombine_v2(
	aorp_object_t aThis,
	aorp_object_t aPrincipal,
	aorp_opflags_t Flags,
	size_t anEnsc,
	aorp_object_t anEnsv[],
	struct aorp_error *anErrPtr /* = NULL */
	);
ОПИСАНИЕ
Функция VodiensCombine_v2 объединяет ансамбли в один результирующий, передаваемый аргументом aThis.
Аргумент aPrincipal должен указывать на принципал, с помощью которого будет производиться данная операция.
Количество и массив ансамблей к объединению задаются аргументами anEnsc и anEnsv соответственно.
В операцию могут быть переданы аргументом Flags следующие флажки:
VodiensF_COMBINE_WITH_MERGE Оставить только уникальные результаты.
VodiensF_COMBINE_WITH_DUP Не удалять результаты из ансамблей, передаваемых аргументом anEnsv, а делать их копии.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
В случае успеха функция VodiensCombine_v2 возвращает количество оставшихся результатов. В противном случае - функция возвращает отрицательное значение как статус ошибки и заполняет её описание в структуру указанную аргументом anErrPtr.

VodiresGetuserdata

ИМЯ
VodiresGetuserdata - получить контекст пользователя.
СИНТАКСИС
#include <Vodi/services/Vodires.h>

bo_status_t
__attribute__((nonnull(1,2))
VodiresGetuserdata(
	aorp_object_t aThis,
	struct vodi_ucontext *anUserCtx,
	struct aorp_error *anErrPtr /* = NULL */
	);
ОПИСАНИЕ
Функция VodiresGetuserdata возвращает контекст пользователя, записывая его по указателю anUserCtx.
К контексту пользователя не применяется операция VODI_UCONTEXT_DRetain.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
В случае успеха функция VodiresGetuserdata возвращает значение больше или равно 0. В противном случае - функция возвращает отрицательное значение как статус ошибки и заполняет её описание в структуру указанную аргументом anErrPtr.

VodiresSetuserdata

ИМЯ
VodiresSetuserdata - установить контекст пользователя.
СИНТАКСИС
#include <Vodi/services/Vodires.h>

bo_status_t
__attribute__((nonnull(1,2))
VodiresSetuserdata(
	aorp_object_t aThis,
	struct vodi_ucontext *anUserCtx,
	struct aorp_error *anErrPtr /* = NULL */
	);
ОПИСАНИЕ
Функция VodiresSetuserdata устанавливает контекст пользователя, передаваемый аргументом anUserCtx.
К контексту пользователя применяется операция VODI_UCONTEXT_DRetain.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
В случае успеха функция VodiresSetuserdata возвращает значение больше или равно 0. В противном случае - функция возвращает отрицательное значение как статус ошибки и заполняет её описание в структуру указанную аргументом anErrPtr.

VodiresFetchinfo

ИМЯ
VodiresFetchinfo - прочитать информацию.
СИНТАКСИС
#include <Vodi/services/Vodires.h>

bo_status_t
__attribute__((nonnull(1,2))
VodiresFetchinfo(
	aorp_object_t aThis,
	struct vodi_result_info *anInfo,
	struct aorp_error *anErrPtr /* = NULL */
	);
ОПИСАНИЕ
Функция VodiresFetchinfo читает информацию о результате в буфер, указанный аргументом anInfo.
Требуется, чтобы было установлено поле ri_type аргумента anInfo. Доступны следующие значения:
VodiK_VPW_RESULT_INFO Информация о номере. anInfo должен указывать на структуру vodi_vpw_result_info.
VodiK_FCW_RESULT_INFO Зарезервировано.
Пользователь должен уничтожить информацию, записанную в буфер указанный через параметр anInfo, вызовом для её функции VodiResultInfoDestroy.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
В случае успеха функция VodiresFetchinfo возвращает значение больше или равно 0. В противном случае - функция возвращает отрицательное значение как статус ошибки и заполняет её описание в структуру указанную аргументом anErrPtr.

VodiResultInfoDestroy

ИМЯ
VodiResultInfoDestroy -- разрушить информацию о результате.
СИНТАКСИС
#include <Vodi/Vodilib.h>

void
__attribute__((nonnull(1))
VodiResultInfoDestroy(
	struct vodi_result_info *anInfo
	);
ОПИСАНИЕ
Функция VodiResultInfoDestroy разрушает информацию о результате, указанную аргументом anInfo. Используется в паре с функцией VodiresFetchinfo.

struct void_vpw_country_id

ИМЯ
struct vodi_vpw_country_id - идентификатор шаблона номерной пластины.
СИНТАКСИС
#include <Vodi/Vpwtypes.h>

struct vodi_vpw_country_id {
	unsigned int code;
	unsigned int id;
	unsigned int sub_id;
};
ОПИСАНИЕ
code Код страны ISO 3166.
id Идентификатор шаблона (о доступных шаблонах смотри раздел «Шаблоны номерных пластин»). Допускается устанавливать в 0. В этом случае действие будет произведено ко всем шаблонам страны, указанной в поле code.
sub_id Зарезервирован, должен быть установлен в 0.

struct void_image

ИМЯ
struct vodi_image - изображение.
СИНТАКСИС
#include <Vodi/Types.h>

struct vodi_image {
	unsigned      img_flags;
	long          img_width;  /* in pixels */
	long          img_height; /* in pixels */
	unsigned      img_bpp;    /* bits per pixel */
	bo_pointer_t  img_base;
};
ОПИСАНИЕ
img_flags Устанавливать в VodiF_IMAGE_PLAIN.
img_width Ширина изображения.
img_height Высота изображения.
img_bpp Количество бит на пиксель. Устанавливать в 8.
img_base Указатель на первую строку изображения. Каждая строка изображения должна быть выровнена на 4 байта.

struct void_vpw_options

ИМЯ
struct vodi_vpw_options - дополнительные параметры анализа.
СИНТАКСИС
#include <Vodi/Vpwtypes.h>

struct vodi_vpw_options {
	int          magic;
	vodi_size_t  imgsz;      /* original-image-size */
	u_int32_t    img_seqnum; /* original image sequence mark */
	bo_utime_t  img_timestamp; /* original image timestamp */
};
ОПИСАНИЕ
magic Должен быть установлен в VodiK_VPW_OPTIONS_WORK_MAGIC.
imgsz Размер изображения передаваемого в функцию VodiprincProcess.
img_seqnum Порядковый номер изображения.
img_timestamp Временная метка изображения (в микросекундах). Позволяет проводить временной анализ при слежении за номерными пластинами. Используется в режиме работы «динамика», а также функциями VodiensUnique, VodiensCombine в режиме «WithMerge» и VodiensCombine_v2 с флажком VodiensF_COMBINE_WITH_MERGE.

struct vodi_ucontext

ИМЯ
struct vodi_ucontext - контекст пользователя.
СИНТАКСИС
#include <Vodi/Types.h>

struct vodi_ucontext {
	vodi_uctx_dup_fn       uctx_dup;
	vodi_udata_retain_fn   uctx_dretain;
	vodi_udata_release_fn  uctx_drelease;
	vodi_uctx_change_fn    uctx_change;
	bo_pointer_t           uctx_udata;
};
ОПИСАНИЕ
Контекст пользователя, который можно передавать в функцию VodiprincProcess. Он будет связан с каждым полученным результатом при анализе данного изображения.
При связывании контекста с результатом, для контекста вызывается операция, указанная в поле uctx_dretain. Если значение этого поля равно NULLF, то вызов операции не происходит.
В процессе работы функции VodiprincProcess бывает потребность дублировать имеющийся результат. В этом случае, для связанного контекста вызывается операция, указанная в поле uctx_dup. Если значение этого поля равно NULLF, то вызов операции не происходит.
Когда результат уничтожается, то для связанного с ним контекста вызывается операция, указанная в поле uctx_drelease. Если значение этого поля равно NULLF, то вызов операции не происходит.
В режиме работы «динамика» происходят объединения результатов полученных на разных изображениях. В этом случае, для контекстов связанных с результатами вызывается операция, указанная в поле uctx_change. Если значение этого поля равно NULLF, то вызов операции не происходит.
Поле uctx_udata может указывать на интересующие данные пользователя.

struct void_plate_info_spec

ИМЯ
struct vodi_plate_info_spec - спецификация результата распознавания.
СИНТАКСИС
#include <Bo/aorp/Vpwtypes.h>

struct vodi_plate_info_spec {
	size_t           pis_plate_variantc;
	vodi_plate_t     pis_plate_variantv[VodiL_VPW_VARIANT_MAX];struct_void_image

	vodi_rect_t      pis_outer_rect;
	vodi_rect_t      pis_exact_rect;
	_Bool            pis_inversed;
	vodi_motiondir_t pis_direction;
	double           pis_angle;
	double           pis_speed;
	size_t           pis_index;
	unsigned         pis_flags;
	_Bool            pis_move_in;
	size_t           pis_status;

	vodi_ucontext_t  pis_uctx;
	vodi_image_t     pis_image;

	bo_utime_t       pis_bftime;
	bo_utime_t       pis_ctime;
	bo_utime_t       pis_ltime;

	vodi_size_t      pis_imgsz;
	u_int32_t        pis_seqnum;
};
ОПИСАНИЕ
pis_plate_variantc Количество вариантов номерной пластины.
pis_plate_variantv Массив вариантов номерных пластин.
pis_outer_rect Прямоугольная область номера, заданная относительно изображения.
pis_exact_rect Прямоугольная область номера, заданная относительно изображения. В отличие от pis_outer_rect, вычислена более точным образом.
pis_inversed Признак инверсного номера.
pis_direction Направление движения номерной пластины.
pis_angle Угол наклона номерной пластины.
pis_speed Скорость движения номерной пластины.
pis_index Идентификатор номерной пластины.
pis_flags Доступны следующие флажки:

VodiF_RESULT_DUP Результат-дубликат. Устанавливается в режиме работы «динамика» с параметром VodiCTL_VPW_DYNAMIC_WITH_DUPLICATE. VodiF_RESULT_LOST Результат – потерян. Устанавливается в режиме работы «динамика», когда принимается решение о том, что объект вышел из зоны видимости. VodiF_RESULT_INVALID Результат – неверен. Устанавливается в режиме работы «динамика», когда принимается решение о том, что данный результат является следствием некого другого результата.

pis_move_in Зарезервировано.
pis_status Зарезервировано.
pis_uctx Контекст пользователя.
pis_image Изображение номерной пластины.
pis_bftime Временная метка лучшего кадра, где был распознан номер.
pis_ctime Временная метка кадра, где впервые был распознан номер.
pis_ltime Временная метка кадра, где в последний раз был распознан номер.
pis_imgsz Зарезервировано.
pis_seqnum Зарезервировано.

struct void_plate

ИМЯ
struct vodi_plate – номерная пластина.
СИНТАКСИС
#include <Bo/aorp/Vpwtypes.h>

struct vodi_plate_info {
	wchar_t     pv_plate_string[VodiL_VPW_SYMBOL_MAX + 1];
	wchar_t     pv_plate_type[VodiL_VPW_SYMBOL_MAX + 5];
	u_int32_t   pv_plate_id;
	u_int32_t   pv_country_id;
	float       pv_validity;
	float       pv_min_symb_validity;
	float       pv_max_geom_deviation;
	float       pv_max_symb_validity;
	float       pv_avg_symb_validity;
	float       pv_avg_geom_deviation;
	u_int32_t   pv_background;
	u_int32_t   pv_sym_color;
	size_t      pv_symbolc;
	vodi_plate_symbol_t  pv_symbolv[VodiL_VPW_SYMBOL_MAX];
};
ОПИСАНИЕ
pv_plate_string Юникод строка номерной пластины.
pv_plate_type Тип номера, задаваемый строкой:

z Маленькая буква. Z Большая буква. x Цифра.| Пробел между символами.

pv_plate_id Идентификатор подходящего шаблона (см. “Шаблоны номерных пластин”).
pv_country_id Код страны ISO 3166.
pv_validity Характеристика качества распознавания.
pv_min_symb_validity Зарезервировано.
pv_max_geom_deviation Зарезервировано.
pv_max_symb_validity Зарезервировано.
pv_avg_symb_validity Зарезервировано.
pv_avg_geom_deviation Зарезервировано.
pv_background Цвет фона номерной пластины.
pv_sym_color Цвет символов на номерной пластине.
pv_symbolc Количество символов на номерной пластине.
pv_symbolv Массив символов.

struct aorp_error

ИМЯ
struct aorp_error - описание ошибки.
СИНТАКСИС
#include <Bo/aorp/Types.h>

struct aorp_error {
	char const   *func;
	char const   *file;
	long          line;
	bo_status_t   status;
	syserrcode_t  syserr;
	unsigned      msgidx;
	unsigned      bufsz;
	char         *msg;
};
ОПИСАНИЕ
func Имя функции, где возникла ошибка. Опциональное поле, обычно заполняется только в отладочных версиях программ.
file Путь к файлу, в котором реализована функция, где возникла ошибка. Опциональное поле, обычно заполняется только в отладочных версиях программ.
line Номер строки в файле file где возникла ошибка. Опциональное поле, имеет смысл только если file не равен NULL.
status Содержит код ошибки (см. <Bo/Errors.h>) c условной областью, в которой эта ошибка возникла.
syserr Код ошибки принятой в данной системе. Если ситуация не вынуждает использовать коды ОС, то используются коды ошибок POSIX.
msgidx Порядковый номер сообщения (см. <Bo/SMessages.h>).
bufsz Размер буфера (в байтах) на который указывает поля msg.
msg Указатель на строку, которая описывает ошибку.

Термины

АОРП объект - это представитель множества АОРП объектов, в которое, в том числе, входит Vpwprinc (принципал), Vpwens (ансамбль) и Vpwres (результат).
Принципал (Vpwprinc) - это объект, на котором (помимо прочих) введена операция распознавания автомобильных регистрационных номеров (VodiprincProcess).
Ансамбль (Vpwens) - список результатов распознавания автомобильных регистрационных номеров.
Результат (Vpwres) - представитель множества результата распознавания автомобильных регистрационных номеров.
Общая библиотека (Shared library) - библиотека общего использования, также известная как динамическая библиотека.
Архивная библиотека (Archive library) - библиотека архивного типа, также известная как статическая библиотека.
Библиотека заготовок (Stub library) - используется в операционной системе Windows для линковки с динамической библиотекой.

Шаблоны номерных пластин

В папке /doc/templates находятся папки с названием и кодом страны, внутри которых находятся изображения типов номерных пластин. Имя изображения соответствует идентификатору шаблона в SDK. Данный идентификатор и код страны используется структурами struct vodi_vpw_country_id и struct vodi_plate.

Таблица выбора модуля vpwc соответственно вашей лицензии

Тип лицензии Название модуля
6 к/c, 1 канал vpwc-f6p1
6 к/c, 2 канала vpwc-f6p2
6 к/c, 3 канала vpwc-f6p3
6 к/c, 4 канала vpwc-f6p4
6 к/c, 5 каналов vpwc-f6p5
6 к/c, 6 каналов vpwc-f6p6
6 к/c, 7 каналов vpwc-f6p7
6 к/c, 8 каналов vpwc-f6p8
6 к/c, 9 каналов vpwc-f6p9
6 к/c, 10 каналов vpwc-f6p10
6 к/c, 11 каналов vpwc-f6p11
6 к/c, 12 каналов vpwc-f6p12
6 к/c, 13 каналов vpwc-f6p13
6 к/c, 14 каналов vpwc-f6p14
6 к/c, 15 каналов vpwc-f6p15
6 к/c, 16 каналов vpwc-f6p16
25 к/c, 1 канал vpwc-f0p1
25 к/c, 2 канала vpwc-f0p2
25 к/c, 3 канала vpwc-f0p3
25 к/c, 4 канала vpwc-f0p4
25 к/c, 5 каналов vpwc-f0p5
25 к/c, 6 каналов vpwc-f0p6
25 к/c, 7 каналов vpwc-f0p7
25 к/c, 8 каналов vpwc-f0p8
25 к/c, 9 каналов vpwc-f0p9
25 к/c, 10 каналов vpwc-f0p10
25 к/c, 11 каналов vpwc-f0p11
25 к/c, 12 каналов vpwc-f0p12
25 к/c, 13 каналов vpwc-f0p13
25 к/c, 14 каналов vpwc-f0p14
25 к/c, 15 каналов vpwc-f0p15
25 к/c, 16 каналов vpwc-f0p16

SDK_for_number_plate_recognition SDK_для_распознавания_номерных_знаков