manual de usuário - Quercus Technologies

Transcrição

manual de usuário - Quercus Technologies
MANUAL DE USUÁRIO
Versão 6.1.x
www.quercus.biz
www.quercus-technologies.com
www.quercus.com.br
SmartLPR® Engine Manual de Usuário (v 6.1.x)
2014 maio
© 2014 Quercus Technologies. Todos os direitos reservados.
Este manual, assim como o software descreveu em ele, é fornecido sob licença e pode ser usado ou pode ser copiado
só de acordo com os termos de tal licença. O conteúdo deste manual é fornecido para uso instrutivo só, é assunto
mudar sem aviso, e não deve ser interpretado como um compromisso pela Quercus Technologies. Quercus
Technologies não supõe nenhuma responsabilidade nem responsabilidade para erros nem imprecisões que podem
aparecer nesta documentação. Exceto como permitido por tal licença, nenhuma parte desta publicação pode ser
reproduzida, armazenou num sistema de recuperação, nem transmitido, em qualquer forma nem por qualquer meio,
eletrônico, mecânico, registrar, nem contrariamente, sem a permissão escrito prévia da Quercus Technologies.
Tabela de conteúdo
Conceitos básicos...................................................................................6
1. Que é SmartLPR® Engine.................................................................6
1.1. Confiabilidade...........................................................................7
1.2. Integração................................................................................7
1.3. Atualizar pólice e compatibilidade.................................................8
1.3.1. Número de versão...............................................................8
1.3.2. Compatibilidade entre versões...............................................8
1.3.3. Edições disponíveis..............................................................8
Instalação...........................................................................................10
2. Enumeração de material.................................................................10
3. Requisitos de sistema.....................................................................10
3.1. Plataforma MS Windows ...........................................................10
3.2. Plataforma Linux......................................................................10
4. Instalação de software....................................................................11
4.1. Plataforma de MS Windows.......................................................11
4.2. Plataforma de Linux.................................................................11
5. Arquivos instalados........................................................................11
6. Licença ........................................................................................12
6.1. Licença hardware.....................................................................12
6.2. Licença software......................................................................12
Uso de software...................................................................................13
7. Engine tool...................................................................................13
7.1. GUI.......................................................................................13
7.1.1. Barra de botões.................................................................14
7.1.2. Zona de visualização .........................................................15
7.1.3. Resultados do reconhecimento ............................................15
7.1.4. Estatísticas das resultados...................................................15
7.1.5. Controle deslizante de atraso ..............................................15
7.2. Opções...................................................................................16
7.2.1. Regiões de Engine..............................................................16
7.2.2. Parâmetros de Engine.........................................................16
7.2.3. Opções gerais....................................................................17
Programação........................................................................................19
8. Configurar SmartLPR® Engine........................................................19
8.1. Arquivos de configuração .........................................................19
8.1.1. Arquivo de seleção.txt........................................................19
8.1.2. Arquivo global.ini...............................................................19
8.2. Configurar SmartLPR® Engine usando EngineTool........................21
8.3. ConfigurarSmartLPR® Engine manualmente................................21
9. Programação básica.......................................................................22
9.1. C...........................................................................................22
9.1.1. Gerência de memória.........................................................25
9.1.2. Crie o arquivo executável....................................................26
9.2. .NET.....................................................................................26
9.2.1. Construir a DLL.................................................................30
9.2.2. Crie o arquivo executável....................................................30
9.3. Outros exemplos .....................................................................30
10. API............................................................................................31
10.1. Definição de estruturas de dados .............................................31
10.1.1. Imagem..........................................................................31
10.1.2. Ponto.............................................................................31
10.1.3. Retângulo.......................................................................32
10.1.4. License...........................................................................32
10.1.5. Engine............................................................................33
10.2. Definições das funções ...........................................................34
10.2.1. Initialize.........................................................................34
10.2.2. Ler placa.........................................................................34
10.2.3. Ler imagem usando o modo multi-imagem...........................35
10.2.4. Ler placa de arquivo bmp..................................................35
10.2.5. Reconhecimento de Multi-placas.........................................36
10.2.6. Multi reconhecimento de placa usando modo multi-imagem....37
10.2.7. Leia placa de ROI.............................................................38
10.2.8. Que licença é melhor........................................................38
10.2.9. Terminate.......................................................................39
10.2.10. Carregue imagem...........................................................39
10.2.11. Criar imagem.................................................................40
10.2.12. Salvar à arquivo bmp......................................................40
10.2.13. Recortar retângulo..........................................................41
10.2.14. Destruir imagem............................................................41
10.2.15. Executar o mixer ...........................................................41
10.3. Códigos de erros ...................................................................43
10.4. Estruturas obsoletas e funções.................................................44
Apêndice.............................................................................................45
11. Apêndice A: Especificações técnicas ...............................................45
12. Apêndice B: Suporte.....................................................................46
SmartLPR® Engine Manual do Usuário
Conceitos básicos
Conceitos básicos
Esta seção fornece um resumo básico das características de SmartLPR Engine.
1. Que é SmartLPR® Engine
Um leitor das placas (LPR) é um conjunto de elementos de hardware e software que são
usados para identificar veículos mediante suas placas. Ou seja, através de uma imagem de
um veículo, um LPR fornecerá a placa em formato de texto.
LPR
1445 BGY
SmartLPR® Engine é uma biblioteca de software implementando os algoritmos principais de
sistema SmartLPR® Access/Speed desenvolvido por Quercus Technologies. SmartLPR ® Engine
capacita o reconhecimento de placas em imagens onde a placa não é destacada do resto do
veículo, de modo que não importa se
a imagem foi tirada
com luz visível ou com luz
infravermelha.
O propósito do SmartLPR® Engine é reconhecer a placa de um veículo que aparece em uma ou
mais imagens. O período curto de tempo tomado por SmartLPR ® Engine, capacita o
reconhecimento de placas com vídeo livre de fluxo, que transforma SmartLPR ® Engine no
motor ideal de reconhecimento para aplicações de controle de veículo de velocidade. Um
conjunto completo de informações sobre a placa e seu processo de reconhecimento está
disponível aos desenvolvedores, então SmartLPR ® Engine pode ser usado em uma grande
variedade de aplicações.
SmartLPR® Engine é fornecido como uma biblioteca dinâmica de conexão disponível para
plataformas Linux e MS Windows.
Quercus Technologies
7
SmartLPR® Engine Manual do Usuário
Conceitos básicos
1.1. Confiabilidade
SmartLPR® Engine foi provado mundialmente com altos índices de reconhecimento. O índice do
sistema de identificações bem-sucedidas depende do estado de conservação das placas de
matrícula, a frota de veículo, e o país.
As placas de matrícula que não são reconhecidos corretamente, correspondem a placas com
caráteres desconhecidos que a unidade substitui com pontos de interrogação. Portanto, os
problemas causados por confusões de caráter são reduzidos.
O alto índice de reconhecimentos de placas, com quase nenhuma confusão de caráteres, e seu
ângulo de captura de até 60º, fornece um conjunto excelente de características de
desempenho para implementar em qualquer tipo sistema de leitura de placas.
1.2. Integração
A aplicação de cliente receberá uma imagem ou um conjunto de imagens de uma fonte
externa, tal como uma câmera. Estas imagens serão usadas pela biblioteca dinamicamente
ligada de SmartLPR® Engine
(DLL), que inclui todas as funcionalidades do sistema, para
extrair a placa. O resultado retornado pela DLL será o Reconhecimento óptico de caracteres
(OCR).
Computador do cliente
Aplicação cliente
Imagem
Imagem
Câmera
Resultado de OCR
SmartLPR® Engine
Biblioteca dinamicamente ligada
Quercus Technologies
8
SmartLPR® Engine Manual do Usuário
Conceitos básicos
1.3. Atualizar pólice e compatibilidade
O software entregado é válido para cada produto de reconhecimento de placas da
família
SmartLPR. Este software pode ser atualizado.
1.3.1. Número de versão
Cada número de versão de software/firmware é composto de três números (para exemplo
2.4.5):
●
O primeiro número (nomeou "major") mostra a versão principal de software/firmware.
Indica quantas vezes que mudanças externo/internos importantes foram feitas.
●
O segundo número (nomeou "menor") indica o número de vezes que novas
funcionalidades foram adicionados à versão importante.
●
O
terceiro
(nomeou
"revisão")
indica
o
número
de
correções
feitas
ao
"importante.menor" versão para fixar erros.
1.3.2. Compatibilidade entre versões
O software de cliente é sempre compatível "para atrás", então todas as versões de SmartLPR
Engine pode ser controlado com a última versão de software, a menos que o contrário
explicitamente seja concordado.
Para saber se uma atualização de software é compatível com sua configuração, a versão atual
deve ser verificado e deve ser comparada com a versão de atualização.
Versão
Compatível
Primeiro numero diferente
Não1
Mesmo primeiro numero
Segundo número diferente
Sim
Mesmo
primeiro
e
segundo
numero
Terceiro número diferente
Sim
1.3.3. Edições disponíveis
Há quatro edições disponíveis com níveis diferentes de funcionalidade.
1
Edição
O número de exemplos
de execução
Limitação de tempo
SmartLPR Engine F400
Ilimitado
Ilimitado
SmartLPR Engine S300
1
Ilimitado
A compatibilidade não é excluída, simplesmente não é garantida. Verifique-o com o departamento de suporte de
Quercus Technologies.
Quercus Technologies
9
SmartLPR® Engine Manual do Usuário
Conceitos básicos
SmartLPR Engine T200
1
10 petições por segundo
SmartLPR Engine P100
1
3 petições por 5 segundos
Quercus Technologies
10
SmartLPR Engine Manual do Usuário
Instalação
Instalação
Esta seção mostra os passos seguir para instalar o software com êxito.
2. Enumeração de material
O material fornecido por uma licença de SmartLPR Engine é:
●
Um
CD-ROM
de
instalação
com
o
software,
as
bibliotecas
e
arquivos
de
desenvolvimento, as mostras de programa com código fonte, e o manual de
desenvolvimento.
●
Uma chave USB dongle de Quercus (em caso da utilização da licença hardware).
3. Requisitos de sistema
3.1. Plataforma MS Windows
A seguinte lista detallha os requisitos mínimos para desenvolver com SmartLPR ® Engine em
MS Windows:
●
Intel Pentium IV de 2.0 GHz com 256 MB de RAM
●
Microsoft Windows XP
●
Microsoft Visual C++ 2005 express edition 2
●
Microsoft Visual Studio .NET 2010 and .NET Framework 43
3.2. Plataforma Linux
A seguinte lista detalha os requisitos mínimos para desenvolver com SmartLPR ® Engine em
Linux:
2
3
●
Intel Pentium IV em 2,0 GHz com 256 MB de RAM
●
x86 Linux
●
libc.so.6
●
GNU Make + gcc2
●
MONO 2.10 e MonoDevelop3
Este software é necessário só para abrir as amostras de C. A DLL em C fornecida é compatível com qualquer
compilador.
Este software é necessário só para trabalhar com. NET framework. A amostras foram programadas e testadas com
este software, mas não quer dizer que eles não trabalham com antigas versões. O projeto de DLL tem que ser
compilado para gerar a DLL em. NET.
Quercus Technologies
11
SmartLPR Engine Manual do Usuário
Instalação
4. Instalação de software
4.1. Plataforma de MS Windows
Para instalar o software, execute “\Windows\SmartLPR Engine 6.1\setup.exe” de seu CD.
O programa de configuração segue automaticamente os seguintes passos:
●
Lhe Pergunta aceitar ou decair a licença de programa.
●
Pergunte-o escolher o diretório de alvo.
●
Instale arquivos de programa.
●
Estabelece variáveis de ambiente.
4.2. Plataforma de Linux
Para instalar o software, execute "Linux/SmartLPR_Engine_6.1.run" de seu CD.
Os passos automaticamente seguidos pelo programa de setup são:
●
Aceita ou não a licença de programa.
●
Escolha o diretório de destino.
●
Instala arquivos de programa.
●
Estabelece variáveis de ambiente.
●
Lembre-o instalar o daemon de dongle (em caso da utilização da licença hardware).
Para instalar o daemon de dongle, extrair o driver apropriado do dongle localizado no diretório
"INSTALL_DIR/Dongle" e siga as instruções descritas no arquivo "readme.html".
5. Arquivos instalados
As seguintes subpastas são achadas na pasta de instalação:
●
Bin: executáveis e bibliotecas. Os arquivos mais relevantes que contém são:
●
SmartLPR.dll (Windows) ou libSmartLPR.então (Linux) : Arquivo SmartLPR ®
Engine DLL.
●
SLPRMixer(.exe): Mixer de regiões.
●
EngineTool(.exe): programa de teste SmartLPR ® Engine.
●
Data. Os arquivos que são exigidos pelo SmartLPR ® Engine e suas ferramentas. Seus
arquivos mais relevantes são:
●
Engine.ini: configuração de SmartLPR® Engine. As variáveis relacionadas com as
regiões.
●
Global.ini: configuração de SmartLPR® Engine. Variáveis de comportamento
global.
●
Selection.txt: arquivo de seleção de país.
●
Engine.dat: arquivo de licença.
Quercus Technologies
12
SmartLPR Engine Manual do Usuário
Instalação
●
Doc: contém esse manual e o arquivo de licença do SmartLPR Engine.
●
Dongle: contém os drivers para o Dongle USB.
●
Include: Contém o C/C + arquivos de cabeçalho exigiram desenvolver uma aplicação
que usa o SmartLPR® Engine.
●
Lib (Windows): Contém o arquivo "lib" usado para ligar com SmartLPR® Engine.
●
Redist (Windows): paquete redistribuible Microsoft VC 8.0.
●
Samples:
C/C
+
e
programas
de
VB.NET
mostrando
a
maioria
de
SmartLPR®
funcionalidades de Motor. Veja o "readme.txt" arquivo na pasta para mais informações.
●
Src: Contém os arquivos de fonte exigiu desenvolver uma aplicação que usa o
SmartLPR® Engine, usando C ou framework .NET.
6. Licença
Quercus Technologies oferece licença hardware o software.
6.1. Licença hardware
SmartLPR® Engine verifica se o produto é autorizado ao operador com a ajuda de um dongle.
O dongle fornecido deve ser ligado à porta USB.
6.2. Licença software
O software autorizando permite que você execute SmartLPR ® Engine numa máquina
específica. Para obter uma licença de software que você deve:
•
Executar a aplicação HWFingerPrint fornecida pela Quercus Technologies na máquina
onde deseja receber uma licença. Criará um arquivo de impressão digital que você deve
enviar à Quercus Technologies (ex: computerX.dat).
•
Repita o processo em cada máquina que você deseja receber uma licença. É importante
você identifica cada máquina com seu arquivo fingerprint.
•
Depois de validar os arquivos fingerprint fornecidos, Quercus Technologies forcenerá un
arquivo
"Engine.dat"
específico
Engine.dat.computerX.serialnumber).
Cada
para
arquivo
cada
deve
máquina
ser
(ex:
renomeado
como
"Engine.dat" e substituir o encontrado no diretório "Data\" da própria máquina depois
da instalação.
Quercus Technologies
13
SmartLPR Engine Manual do Usuário
Uso do software
Uso de software
7. Engine tool
EngineTool pode ser usado para o operador testar o desempenho de SmartLPR ® Engine assim
como configurá-lo graficamente. Para executar EngineTool, execute a aplicação EngineTool do
diretório "Bin\" ou selecioná-lo no menu de início.
7.1. GUI
A aplicação é dividida em cinco zonas:
●
Barra de botões.
●
Zona de visualização.
●
Resultados do reconhecimento.
●
Resultados estatísticos.
●
Controle deslizante.
Barra de
botões.
Zona de
visualiza
ção.
Resultad
os
estatístic
os.
Resultados
estatísticos.
Controle
deslizante.
Quercus Technologies
14
SmartLPR Engine Manual do Usuário
Uso do software
7.1.1. Barra de botões
1
2
3
A barra de botões ocupa a parte esquerda da tela. Os botões são agrupados
por funcionalidade. Alguns botões estão aplicáveis só em circunstâncias
específicas. Os botões disponíveis são:
1. Saída: Desliga a aplicação.
4
2. Pasta de seleção: Seleciona a pasta contendo as imagens para
5
reconhecer.
6
3. Start: Disponível somente quando uma pasta estiver selecionada e
7
carregada, inicia o processo de reconhecimento, processamento de
8
cada imagem da pasta.
9
4. Reset: Disponível somente quando uma pasta estiver selecionada e
10
carregada, repõe na posição do primeiro arquivo e inicializa as
11
estatísticas.
5. Pausa:
Disponível somente quando o processo de reconhecimento está sendo
executado, pausa a aplicação.
6. Posterior:
Disponível somente quando o aplicativo estiver em pausa, Reconhece a
próxima imagem na pasta.
7. Anterior:
Disponível somente quando o aplicativo estiver em pausa, reconhece a
imagem anterior na pasta.
Note-se que quando uma imagem foi reconhecida
previamente as estatísticas não são atualizadas.
8. Exportar para CSV: Exporta os resultados das estatísticas em um arquivo CSV.
9. Configuração: Configura as diferentes opções de SmartLPR® Engine (ver secção 7.2).
10. Manual de SmartLPR® Engine:
Mostra o manual de referência de SmartLPR Engine.
É necessario ter um visualizador de PDF associado a este tipo de arquivos (Acrobat
Reader que vai encontrar no CD de instalação de SmartLPR® Engine).
11. Sobre: Mostra informações sobre Quercus Technologies.
Quercus Technologies
15
SmartLPR Engine Manual do Usuário
Uso do software
7.1.2. Zona de visualização
A zona de visualização mostra a imagem e a localização da imagem de placa reconhecida.
7.1.3. Resultados do reconhecimento
Os resultados de reconhecimento consistem em: a placa extraida em formato de texto, a placa
corrigida na imagem extraida, a posição de cada caráter reconhecido, a qualidade de cada
caráter assim como a qualidade média do reconhecimento.
Formato de
texto
Imagem da placa e
posição de caráter
A qualidade de cada caráter e
qualidade média
7.1.4. Estatísticas das resultados
Os resultados das estatísticas são atualizados a cada
nova imagem reconhecida. Eles são
organizados em três seções:
Arquivos
•
Atual: O arquivo atual na pasta selecionada.
•
Total: O número total de arquivos na pasta selecionada.
Tempo:
•
Atual: O tempo de processo de reconhecimento para a imagem atual.
•
Media: O tempo médio de processo de reconhecimento.
•
Min: O tempo mínimo de processo de reconhecimento.
•
Max: O tempo máximo de processo de reconhecimento.
Confiabilidade
Estes parâmetros serão computados se as opções de demo estão ativadas para comparar o
nome do arquivo da imagem com a placa detectada (vê seção 7.2.3 para mais detalhes).
•
Acertos: O número de acertos no processo de reconhecimento.
•
Falhas: O número de falhos no processo de reconhecimento.
•
Porcentagem: A porcentagem de placas corretamente reconhecidas até agora.
7.1.5. Controle deslizante de atraso
O controle deslizante de atraso lhe permite escolher o tempo que o resultado de
Quercus Technologies
16
SmartLPR Engine Manual do Usuário
reconhecimento será mostrado em tela antes que a próxima imagem seja
Uso do software
processada. Os
valores aceitadas são entre 0 e 4 segundos.
7.2. Opções
Quando o botão "Opções" é pressionado, a janela de configuração com três etiquetas é
carregada. Cada etiqueta é descrita nas seguintes subseções.
7.2.1. Regiões de Engine
SmartLPR® Engine pode trabalhar com vários países (nomeou "regiões" no sistema SmartLPR ®
Engine). Os países disponível são mostrados na coluna "Disponível" classificada em ordem
alfabética. Esses países que você quer que SmartLPR ® Engine reconheça são mostrados na
coluna "Atual". Pode adicionar ou retirar os países atuais usando os botões direito-esquerdo e
os classifica usando as setas. Lembre-se de que a ordem dos países atuais é importante para
aumentar a velocidade máxima e a confiabilidade. As mudanças só serão aceitas quando o
botão "Aceita" é pressionado. Para descartar as mudanças pressiona o botão "Cancela".
7.2.2. Parâmetros de Engine
SmartLPR® Engine deve ser configurado para usar vários parâmetros (vê seção 8.1.2 para o
Quercus Technologies
17
SmartLPR Engine Manual do Usuário
Uso do software
significado de cada parâmetro). Pode personalizar os parâmetros de configuração marcando a
caixa "Personalizada" ou carrega uma configuração predefinida. Quatro níveis de configuração
são criados para aumentar ao máximo a confiabilidade ou aumentar ao máximo o
desempenho. Pode escolher um dos níveis mencionados utilizando o controle deslizante
fornecido. As mudanças só serão aceitadas quando o botão "Aceita" é pressionado. Para
descartar as mudanças pressiona o botão "Cancela".
7.2.3. Opções gerais
Engine Tool também fornece algumas utilidades que você pode capacitar ou incapacitar.
Modo de demo
•
Quando o modo de demo está ativo, o processo de reconhecimento é cíclico (o processo
é começado de novo depois que foi terminado). O resto das opções estarão
indisponíveis enquanto o modo de demo está ativo.
Teste
•
Compare o nome do arquivo com a placa detectada. Esta opção capacita a computação
de sucessos, falhos e porcentagem dos resultados de estatística.
•
Copie as imagens corretamente detectadas à pasta selecionada (quando a opção de
comparação é ativada).
•
Copie as imagens detectadas incorretamente na pasta selecionada (quando a opção de
Quercus Technologies
18
SmartLPR Engine Manual do Usuário
Uso do software
comparação é ativada).
Renomear
•
Renomee as imagens usando a placa detectada e as guarda na pasta selecionada.
Classificação
•
Classifica as imagens pelo país detectado, criando uma nova pasta para cada país
detectado na pasta selecionada.
As mudanças só serão guardadas quando o botão "Aceita" é pressionado. Para descartar as
mudanças pressionar o botão "Cancela".
Quercus Technologies
19
SmartLPR Engine
Manual do Usuário
Programação
Programação
8. Configurar SmartLPR® Engine
8.1. Arquivos de configuração
8.1.1. Arquivo de seleção.txt
SmartLPR® Engine pode trabalhar com vários países. Os países disponíveis são esses que pode
achar no diretório "Data\Regions". A biblioteca pode ser configurada para trabalhar com um
país até com todos os países juntos. É importante anotar que o tempo de reconhecimento
aumentará com o número de países escolhidos. Também nota que a confiabilidade podia
diminuir se o número de países escolhidos aumenta.
O arquivo "Data\Selection.txt" contém várias linhas. Cada linha refere a um arquivo de "ini" do
diretório "Data\Regions" (refere a um país). Para aumentar ao velocidade máximo e a
confiabilidade, as linhas devem ser
ordenados de acordo com a probabilidade de sua
ocorrência.
8.1.2. Arquivo global.ini
O arquivo "Global.ini" armazena todos os parâmetros de configuração necessarios para
executar o SmartLPR® Engine. O significado de cada parâmetro e seus valores convenientes é
explicado aqui.
Quando SmartLPR® Engine procura candidatos para placas, usa vários parâmetros para
construir a lista de candidatos. Uma vez um candidato de placa foi achado e foi completamente
processado para um país, a placa de matrícula resultante é testada. Se o número de
carácteres desconhecidos não é maior que MaxBadChars, e a qualidade média é igual o maior
que
MinQuality,
o
processo
é
terminado
e
o
resultado
é
liberado
imediatamente.
Contrariamente, o processo continua para o resto de países, candidatos a placas (se mais de
um está disponível). Uma vez uma imagem foi processada, a placa resultante é testada outra
vez. Se o número de caráteres desconhecidos não é maior que MaxCandidateBadChars, e a
qualidade média é igual o maior que MinCandidateQuality, o processo é terminado e o
resultado é liberado imediatamente. Contrariamente, o processo continua para as próximas
imagens (se existem). Valores aceitos para MinQuality e MinCandidateQuality são entre 850 e
999, e para MaxBadChars e MaxCandidateBadChars são entre 0 e 2.
Quercus Technologies
20
SmartLPR Engine
Manual do Usuário
Programação
O parâmetros MinCharHeight e MaxCharHeight limitam a altura (em pixels) dos caráteres
no quadro. Dar um intervalo mais exato reduzirá o número de falsos candidatos acharam no
quadro, reduzindo por conseqüência o tempo necessitou processá-lo.
Valores aceitos para
MinCharHeight e MaxCharHeight devem estar entre 1 e 120.
Quando o algoritmo procura a placa de matrícula no quadro, vários candidatos podem ser
achados. Nesse caso, candidatos são classificados de acordo com sua probabilidade de ser uma
placa de matrícula. O parâmetro MaxNumberOfCandidates limita o número máximo de extra
candidatos que o algoritmo processará, sem levar em conta o número de placas que você quer
achar numa imagem. O mais alto é este parâmetro, a mais alta a probabilidade de achar o
candidato que contém a placa. No entanto, o tempo de reconhecimento aumentará com o
número de candidatos para ser processado. Um valor razoável para este parâmetro é 1.
O identificador MinCharsPerLicense define o número mínimo de caráteres numa placa de
matrícula.
SmartLPR® Engine implementa quatro algoritmos distintos para procurar a placa de matrícula
na imagem. Cada país é configurado para usar os algoritmos que fornecem os melhores
resultados. Se o identificador Algoritmos não é achado em arquivo "Global.ini", cada país
usarão o próprios algoritmos. Contrariamente, o operador pode forçar o Engien a usar certos
algoritmos. Se utiliza todos os algoritmos a confiabilidade aumenta ligeiramente, mas tempo
médio de leitura podia ser multiplicado por quatro em algumas circunstâncias. Os valores
válidos para Algoritmos são "straight", "slope", "sides" e "bruteforce".
O identificador MatchingPenalization é um parâmetro interno usado no processo de
reconhecimento de caráter, para fazer a correspondência mais rigorosa. Valores aceitos para
MatchingPenalization são entre 0 e 30.
O parâmetro que Mixing é usado por SLPRMixer para trabalhar com vários países. É
recomendado não mudar o valor deste parâmetro.
Em alguns países o resultado de reconhecimento de placa pode ser expressado usando a
codificação Ocidental ou Arábe. O identificador ExtendedCodification estabelecido a 1
capacita a codificação Arábe, e a 0 capacita a codificação Ocidental.
Quercus Technologies
21
SmartLPR Engine
Manual do Usuário
Programação
8.2. Configurar SmartLPR® Engine usando EngineTool
Os passos para configurar SmartLPR® Engine usando EngineTool são como segue:
1. Selecione os países que quer que SmartLPR® Engine reconheça (vê seção 7.2.1).
2. Estabelece os parâmetros (vê seção 7.2.2).
3. Salva mudanças.
8.3. ConfigurarSmartLPR® Engine manualmente
Os passos para configurar SmartLPR® Engine manualmente são como segue:
1. Edite o arquivo "Data\Selection.txt" (vê a seção 8.1.1 para mais detalhes) para
configurar SmartLPR® Engine trabalhar com os países desejados.
2. Edite o arquivo "Data\Global.ini" (vê a seção 8.1.2 para mais detalhes) para estabelecer
os parâmetros.
3. Uma vez estes arquivos são salvados execute
a aplicação SLPRMixer do diretório
"Bin\". O arquivo "Data\Current\Engine.ini" refletirá suas mudanças, e o SmartLPR ®
Engine estará preparado para reconhecer placas dos países que você escolheu usando
os parâmetros que você configurou.
Quercus Technologies
22
SmartLPR Engine
Manual do Usuário
Programação
9. Programação básica
Os passos exigidos para desenvolver um programa que é capaz de reconhecer placas usando
SmartLPR® Engine são descritos próximo.
É necessario um conhecimento básico de programação para entender este capítulo (C ou
VB.NET). Se você trabalha geralmente com esta tecnologia, não terá nenhum problema para
seguir os exemplos.
O código de fonte dos exemplos é achado em <installation folder>/Samples.
9.1. C
Um programa curto em C é mostrado a continuação, que é capaz de reconhecer uma placa de
uma imagem BMP, de um buffer de dados lendo o conteúdo de um arquivo RAW, e de um
conjunto de imagens codificadas em vários arquivos RAW, usando a biblioteca de SmartLPR®
Engine.
O
código
fonte
dos
exemplos
é
achado
em
<installation
folder>/Samples/CApi_BasicSample/.
/*------------------------------------------,
| Copyright (C) 2013 Quercus Technologies |
| All rights reserved.
|
`------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include "SmartLPR.h"
/*--------------------------------------------------------------------- */
/* Change this values in order to change the behavior of the program
*/
/*--------------------------------------------------------------------- */
#define IMAGE_NAME "1445BGY.bmp"
#define NUM_MULTI_IMAGES 3
/*multi image filenames: img1.bmp, image2.bmp, ..., imageN.bmp*/
/*--------------------------------------------------------------------- */
SmartLPRError ReadFromBmp(int h, SmartLPRLicense* pLicense);
SmartLPRError ReadFromBuffer(int h, SmartLPRLicense* pLicense);
SmartLPRError ReadMultifile(int h, SmartLPRLicense* pLicense);
int main(int argc, char* argv[])
{
SmartLPRLicense license;
SmartLPRError err;
int h;
/* Initializing */
err = SmartLPRInitialize(&h);
printf("Initialized -> 0x%x\n", err);
if (err) return -1;
/* Reading license from bmp file */
err = ReadFromBmp(h, &license);
Quercus Technologies
23
SmartLPR Engine
Manual do Usuário
Programação
if (!err) printf("%s, %s (%f)\n", IMAGE_NAME, license.License, license.AvgQuality);
else printf("%s, Error found (0x%x)\n", IMAGE_NAME, err);
/* Reading license from raw buffer */
err = ReadFromBuffer(h, &license);
if (!err) printf("%s, %s (%f)\n", IMAGE_NAME, license.License, license.AvgQuality);
else printf("%s, Error found (0x%x)\n", IMAGE_NAME, err);
/* Reading license from a set of raw buffers */
err = ReadMultifile(h, &license);
if (!err) printf("%s, %s (%f) bestImage=img%d\n", "multifiles", license.License,
license.AvgQuality, license.BestImage+1);
else printf("%s, Error found (0x%x)\n", "multifiles", err);
/* Terminating */
err = SmartLPRTerminate(h);
printf("Terminated -> 0x%x\n", err);
}
return 0;
SmartLPRError ReadFromBmp(int h, SmartLPRLicense* pLicense)
{
pLicense->Size = sizeof(SmartLPRLicense);
SmartLPRCreateImage(&pLicense->PlateImage, 0, 0);
return SmartLPRReadLicenseFromBmp(h, IMAGE_NAME, pLicense);
}
SmartLPRError ReadFromBuffer(int h, SmartLPRLicense* pLicense)
{
SmartLPRError err;
SmartLPRImage image;
err = SmartLPRLoadImage(IMAGE_NAME, &image);
if (err != SLPR_OK) return err;
pLicense->Size = sizeof(SmartLPRLicense);
SmartLPRCreateImage(&pLicense->PlateImage, 0, 0);
err = SmartLPRReadLicense(h, image.Height, image.Width, image.LineWidth, image.Data, pLicense);
SmartLPRDestroyImage(&image);
return err;
}
SmartLPRError ReadMultifile(int h, SmartLPRLicense* pLicense)
{
void *pData[NUM_MULTI_IMAGES];
char filename[256];
SmartLPRError err;
int i;
SmartLPRImage image[NUM_MULTI_IMAGES];
for (i=0; i<NUM_MULTI_IMAGES; i++)
{
sprintf(filename, "img%d.bmp", i+1);
err = SmartLPRLoadImage(filename, &image[i]);
pData[i] = image[i].Data;
}
pLicense->Size = sizeof(SmartLPRLicense);
SmartLPRCreateImage(&pLicense->PlateImage, 0, 0);
err = SmartLPRReadLicenseMultiImage(h, image[0].Height, image[0].Width, image[0].LineWidth,
NUM_MULTI_IMAGES, pData, pLicense);
for (i=0; i<NUM_MULTI_IMAGES; i++) SmartLPRDestroyImage(&image[i]);
return err;
}
As partes do código de amostra:
#include "SmartLPR.h"
Quercus Technologies
24
SmartLPR Engine
Manual do Usuário
Programação
O único arquivo de cabeçalho exigido para interagir com SmartLPR® Engine em C.
O código é estruturado em vários métodos, para distinguir cómo ler uma licença de:
•
um arquivo BMP
SmartLPRError ReadFromBmp(int h, SmartLPRLicense* pLicense);
•
a buffer
SmartLPRError ReadFromBuffer(int h, SmartLPRLicense* pLicense);
•
um conjunto de buffers (multi image)
SmartLPRError ReadMultifile(int h, SmartLPRLicense* pLicense);
As informações sobre a placa e seu processo de reconhecimento são retornadas numa
estrutura de SmartLPRLicense. No processo de leitura de multi-imagem, a imagem de índice
de base zero em que a placa foi achada (ou em que a placa com a mais alta qualidade foi
achada) também é armazenada na estrutura de SmartLPRLicence.
O processo principal é basicamente composto de:
•
Carregar a configuração.
SmartLPRInitialize(int &h);
•
Ler a licença de um quadro ou um jogo de quadros, usando os métodos mencionados
acima.
•
Faça algo com a placa, neste caso imprimindo alguma informação.
•
Descarregar a configuração.
SmartLPRTerminate(int h);
Agora, será explicado em detalhe cómo é lida uma licença de cada fonte mencionada antes.
Leitura da placa de um arquivo BMP
Isto é a maneira mais simple para reconhecer a placa de uma imagem. Só tem que:
•
Inicializar o tamanho de estrutura de SmartLPRLicense.
pLicense->Size = sizeof(SmartLPRLicense);
SmartLPRCreateImage(&pLicense->PlateImage, width, height);
•
Ler a placa do arquivo de imagem BMP. O resultado do processo será retornado
utilizando a estrutura SmartLPRLicense.
SmartLPRReadLicenseFromBmp(h, imageName, pLicense);
•
Libere as imagens usadas se for necessário, usando a função SmartLPRDestroyImage.
Leitura da placa de um buffer
Os passos para ler uma licença de um buffer de dados são:
Quercus Technologies
25
SmartLPR Engine
•
Manual do Usuário
Programação
Inicialize e reserva o buffer. Pode usar a função SmartLPRLoadImage para carregar e
inicializar o buffer de dados de um arquivo JPG ou BMP usando uma estrutura de
SmartLPRImage.
•
Inicialize o tamanho de estrutura SmartLPRLicense.
pLicense->Size = sizeof(SmartLPRLicense);
SmartLPRCreateImage(&pLicense->PlateImage, width, height);
•
Leia a placa do buffer de dados, indicando a altura e largura de imagem, e largura de
linha. Como de costume, o resultado do processo será retornado utilizando a estrutura
SmartLPRLicense.
SmartLPRReadLicense(h, image.Height, image.Width, image.LineWidth,
image.Data, pLicense);
•
Libere o buffer de dados e imagens usadas se for necessário.
Leitura de placa de um conjunto de buffers
Uma placa pode ser lida de um conjunto de várias imagens do mesmo veículo. Para fazer isso,
você deve:
•
Inicializar e reservar o buffer de dados com o conteúdo de cada quadro.
•
Inicializar o tamanho de estrutura SmartLPRLicense.
pLicense->Size = sizeof(SmartLPRLicense);
SmartLPRCreateImage(&pLicense->PlateImage, width, height);
•
Ler a placa do buffer de dados, indicando a altura e largura de imagem, a largura de
linha, e o número de imagens armazenadas no buffer. O resultado do processo será
retornado ussando uma estrutura SmartLPRLicense, e a imagem em que a placa foi
achada também é retornada.
SmartLPRReadLicenseMultiImage(h, imageHeight, imageWidth, imageLineWidth,
numImages, pData, pLicense);
•
Libere o buffer de dados e imagens usadas se for necessário.
9.1.1. Gerência de memória
A estrutura SmartLPRImage exige um pouco de atenção para ser usada corretamente. Esta
estrutura tem um membro de dados chamado Dados que é uma indicação ao conteúdo de
dados da imagem. Este buffer de dados tem que ser alocado pelo operador antes que a
estrutura de SmartLPRImage seja usada, e liberado quando seja necessário. Aquí, um pequeno
código de amostra é fornecido.
Inicialização
A inicialização de estrutura de SmartLPRImage consiste em reservar o buffer de dados e
Quercus Technologies
26
SmartLPR Engine
Manual do Usuário
Programação
atualizar o tamanho de buffer. Ista é a função de SmartLPRCreateImage.
SmartLPRLicense license;
license.Size = sizeof(SmartLPRLicense);
SmartLPRCreateImage(&pLicense->PlateImage, width, heiht);
Uso
Depois de carregar o arquivo de configuração e ler a placa de uma fonte, a estrutura
SmartLPRLicense conterá o resultado do processo de reconhecimento. Se o buffer de dados de
PlateImage foi reservado (criando uma imagem de largura e altura maior que zero) o processo
de reconhecimento o encherá. Uma função para salvar uma estrutura SmartLPRImage a um
arquivo BMP é fornecida também.
SmartLPRInitialize(int &h);
SmartLPRReadLicenseFromBmp(int h, IMAGE_FILE, &license);
SmartLPRSaveToBmp(&license.PlateImage, "license.bmp"))
Terminação
Para terminar a aplicação corretamente, tem que descarregar o arquivo de configuração e
liberar o buffer de dados de SmartLPRImage.
SmartLPRTerminate(int h);
SmartLPRdestroyImage(&license.PlateImage);
9.1.2. Crie o arquivo executável
Visual Studio
●
Abra o arquivo "Samples.sln" da pasta de "Samples".
●
Pressione o botão dereito sobre Sample1 e selecione "Project only → Build only
BasicSample”.
Linux
●
Abra uma consola.
●
Abra a pasta Samples/CApi_BasicSample.
●
Execute o comando "make".
9.2. .NET
A abragência do NET permite que o operador gere uma biblioteca .NET para usar as funções
de API em C em um ambiente de .NET.
Todos os exemplos forneceram com envoltório .NET são programados em Visual Basic. Um
Quercus Technologies
27
SmartLPR Engine
Manual do Usuário
Programação
programa curto em VB.NET é mostrado à continuação, que é capaz de reconhecer uma placa
de uma imagem de BMP, de um buffer de dados lendo o conteúdo de um arquivo RAW, e de
um conjunto de imagens codificadas em vários arquivos RAW, usando a biblioteca de
SmartLPR
Engine.
O
código
fonte
dos
exemplos
é
achado
em
<installation
folder>/Samples/VisualBasic_BasicSample/.
Module Module1
Const IMAGE_HEIGHT As Integer = 480
Const IMAGE_WIDTH As Integer = 640
Const IMAGE_LINE_WIDTH As Integer = 640
Const IMAGE_NAME As String = "1445BGY.bmp"
'multi image filenames: img1.bmp, image2.bmp, ..., imageN.bmp
Const NUM_MULTI_IMAGES As Integer = 3
Sub Main()
Dim engine As New SmartLPR.Engine
Dim license As New SmartLPR.License
Dim err As SmartLPR.EngineError
'Initializing
err = engine.Initialize()
System.Console.WriteLine("Initialized -> {0}", err)
If err <> SmartLPR.EngineError.SLPR_OK Then
Exit Sub
End If
'Reading license from bmp file
err = ReadFromBmp(engine, license)
If err <> SmartLPR.EngineError.SLPR_OK Then
System.Console.WriteLine("ReadLicenseFromBmp fails, err:" + err.ToString())
Exit Sub
Else
System.Console.WriteLine("{0}, {1} ({2})", IMAGE_NAME, license.DecoratedLicense,
license.AvgQuality)
End If
'Reading license from buffer
err = ReadFromBuffer(engine, license)
If err <> SmartLPR.EngineError.SLPR_OK Then
System.Console.WriteLine("ReadLicenseFromRaw fails, err:" + err.ToString())
Exit Sub
Else
System.Console.WriteLine("{0}, {1} ({2})", IMAGE_NAME, license.DecoratedLicense,
license.AvgQuality)
End If
'Reading multi file license
err = ReadMultifile(engine, license)
If err <> SmartLPR.EngineError.SLPR_OK Then
System.Console.WriteLine("ReadMultifileRaw fails, err:" + err.ToString())
Exit Sub
Else
System.Console.WriteLine("multifiles, {0} ({1}) bestImage=img{2}",
license.DecoratedLicense, license.AvgQuality, license.BestImage + 1)
End If
'Terminating
err = engine.Terminate()
System.Console.WriteLine("Terminated -> {0}", err)
If err <> SmartLPR.EngineError.SLPR_OK Then
System.Console.WriteLine("Terminate fails, err:" + err.ToString())
Exit Sub
End If
Quercus Technologies
28
SmartLPR Engine
Manual do Usuário
Programação
End Sub
Function ReadFromBmp(ByVal engine As SmartLPR.Engine, ByRef license As SmartLPR.License) As
SmartLPR.EngineError
ReadFromBmp = engine.ReadLicenseFromBmp(IMAGE_NAME, license)
End Function
Function ReadFromBuffer(ByVal engine As SmartLPR.Engine, ByRef license As SmartLPR.License) As
SmartLPR.EngineError
Dim img As SmartLPR.Image
Dim err As SmartLPR.EngineError
img = engine.CreateImage(0, 0)
err = engine.LoadImage(img, IMAGE_NAME)
If err <> SmartLPR.EngineError.SLPR_OK Then
ReadFromBuffer = err
End If
ReadFromBuffer = engine.ReadLicense(img.Height, img.Width, img.LineWidth, img.Buffer,
license)
End Function
Function ReadMultifile(ByVal engine As SmartLPR.Engine, ByRef license As SmartLPR.License) As
SmartLPR.EngineError
Dim img As SmartLPR.Image
Dim ptrs as SmartLPR.IntPtrArray
Dim fName As String
Dim err As SmartLPR.EngineError
ptrs=new SmartLPR.IntPtrArray(NUM_MULTI_IMAGES)
For i As Integer = 0 To NUM_MULTI_IMAGES - 1
fName = "img" + (i + 1).ToString() + ".bmp"
img = engine.CreateImage(IMAGE_WIDTH, IMAGE_HEIGHT)
err = engine.LoadImage(img, fName)
ptrs.Add(img.BufferPtr)
Next i
ReadMultifile = engine.ReadLicenseMultiImage(IMAGE_HEIGHT, IMAGE_WIDTH, IMAGE_LINE_WIDTH,
NUM_MULTI_IMAGES, ptrs.GetIntPtrArray(), license)
End Function
End Module
As partes do código de amostra:
Todas as classes e tipos de informações necessárias são definidas no namespace SmartLPR.
O código é estruturado em vários métodos, para distinguir cómo ler uma placa de:
•
um arquivo BMP
Function ReadFromBmp(ByVal engine As SmartLPR.Engine, ByRef license As
SmartLPR.License) As SmartLPR.EngineError
•
um buffer
Function ReadFromBuffer(ByVal engine As SmartLPR.Engine, ByRef license As
SmartLPR.License) As SmartLPR.EngineError
•
um conjunto de buffers (multi imagem)
Function ReadMultifile(ByVal engine As SmartLPR.Engine, ByRef license As
SmartLPR.License) As SmartLPR.EngineError
Quercus Technologies
29
SmartLPR Engine
Manual do Usuário
Programação
As informações sobre a placa e seu processo de reconhecimento são retornadas na classe
License. No processo de leitura de multi-imagem, a imagem de índice de base zero em que a
placa foi achada (ou em que a placa com a mais alta qualidade foi achada) também é
armazenada na classe License.
O processo principal basicamente é composto de:
•
Carregar a configuração, chamando o método Inicialize de classe Engine.
•
Ler a licença de uma imagem ou um conjunto de imagens, usando os métodos
mencionados acima.
•
Faça algo com a licença, neste caso imprimindo alguma informação.
•
Descarregar a configuração, chamando o método Terminate de classe Engine .
Os seguintes parágrafos explicam a maneira de ler uma placa de cada fonte mencionada
antes.
Leitura de placa de um arquivo BMP
Ista é a maneira mais simple de reconhecer uma placa de uma imagem. Você só tem que
chamar o método ReadLicenseFromBmp de classe Engine. O resultado do processo será
retornado usando a classe License.
ReadFromBmp = engine.ReadLicenseFromBmp(IMAGE_NAME, license)
Leitura de placa de um buffer
Os passos para ler uma placa de um buffer de dados são:
•
Inicialize e reserve o buffer de dados. Pode usar o função LoadImage para que a classe
Engine carregue e inicialize o buffer de dados de um arquivo JPG ou BMP usando a
classe Image.
Dim img As SmartLPR.Image
img = engine.CreateImage(0, 0)
err = engine.LoadImage(img, IMAGE_NAME)
•
Leia a placa do buffer de dados, indicando a altura e largura de imagem, e a largura de
linha. Como de costume, o resultado do processo será retornado usando a classe
License.
ReadFromBuffer = engine.ReadLicense(img.Height, img.Width, img.LineWidth,
img.Buffer, license)
Leitura de placa de um conjunto de buffers
Quercus Technologies
30
SmartLPR Engine
Manual do Usuário
Programação
Uma placa pode ser lida de um conjunto de várias imagens do mesmo veículo. Para fazer isso,
você deve:
•
Inicializar e reservar o buffer de dados com o conteúdo de cada imagem.
•
Ler a placa de um buffer dos dados, indicando a altura e largura de imagem, largura de
linha, e o número de imagens armazenadas no buffer. O resultado do processo será
retornado utilizando a classe License, e a imagem em que foi achada a placa também é
retornada.
ReadMultifile = engine.ReadLicenseMultiImage(IMAGE_HEIGHT, IMAGE_WIDTH,
IMAGE_LINE_WIDTH, NUM_MULTI_IMAGES, ptrs.GetIntPtrArray(), license)
9.2.1. Construir a DLL
Se você quer desenvolver usando o envoltório .NET, o primeiro passo é compilar o projeto de
DLL para gerar a DLL em. NET. O projeto fornecido é localizado em <installation
folder>/Src/WrapperNet. Você tem que abrir o arquivo "SmartLPRNet.sln" com Visual Studio
ou MonoDevelop e constroem o projeto de SmartLPRNet. A DLL gerou será localizado em
<installation folder>/Bin/SmartLPRNet.dll
9.2.2. Crie o arquivo executável
Para gerar o arquivo executável que tem que abrir o arquivo "VisualBasic_Samples.sln" achado
na pasta "Samples" com Visual Studio ou MonoDevelop. Então pressione o botão direito sobre
o projeto de BasicSample e contruí-o. O arquivo executável BasicSample.exe será criado.
9.3. Outros exemplos
Na pasta <installation folder>/ Samples há mais exemplos de programação com SmartLPR®
Engine. A pasta inclui um arquivo "Readme.txt" com a descrição dos exemplos incluídos.
Quercus Technologies
31
SmartLPR Engine
Manual do Usuário
Programação
10. API
A seguinte seção descreve as estruturas de dados e funções usadas pela biblioteca de
SmartLPR Engine para explicar seu uso e funcionalidades.
Toda API em .NET é descrita usando a sintaxe C# mas está usável de cada linguagem .NET.
10.1. Definição de estruturas de dados
10.1.1. Imagem
Ista estrutura é usada para poupar um conteúdo de imagem.
C:
SmartLPRImage struct.
C#:
classe Image.
Membros de dados:
●
Len
tamanho de vetor Data.
●
Height
número de linhas de imagem.
●
Width
número de pixels por linha.
●
LineWidth
número de bytes de memória usados por linha.
●
Data
em C, é um ponteiro de datos a imagens. As imagens devem ter um
plano com 8 bits por pixel.
●
Buffer
Em .NET, é um buffer da dados à imagem.
●
BufferPtr
Em. NET, é um ponteiro ao buffer de dados.
As duas representações de buffer usadas em .NET (séries de dados e ponteiro ào dados) são
necessário porque o API em C só trabalha com o poteiro da imagem de dados, mas a
conversão interna entre os ponteiros em C e os em .NET é mais caras que trabalhar com a
série de byte de dados; então o ponteiro de dados só é usada quando é essencial.
Nota: Veja seção 9.1.1 para mais informações sobre o uso correto desta estrutura.
10.1.2. Ponto
Esta estrutura é usada para representar uma posição de pixel numa imagem, usando origem
superior esquerda.
C:
SmartLPRPoint struct.
C#:
Não usado. Usa o objeto System.Drawing.Point.
Quercus Technologies
32
SmartLPR Engine
Manual do Usuário
Programação
Membros de dados:
●
X
A x-coordenada do ponto (positivo de esquerda a direita).
●
Y
A y-coordenada do ponto (positivo de cima para baixo).
10.1.3. Retângulo
Esta estrutura é usada para especificar uma seção retangular numa imagem.
C:
SmartLPRRectangle struct.
C#:
Não usado. Usa o objeto System.Drawing.Rectangle.
Membros de dados:
●
TopLeft
O ponto acima - esquerda do retângulo.
●
BottomRight
O ponto inferior-direito do retângulo.
10.1.4. License
Retorna os resultados de processo de leitura.
C:
SmartLPRLicense struct.
C#:
Classe License.
Membros de dados:
●
Size (C)
Em estrutura em C, é o tamanho de estrutura de SmartLPRLicense em
bytes.Este campo deve ser posto antes de chamar qualquer versão de
SmartLPRReadLicense.
●
License(C), DecoratedLicense(C)
String contendo a licença decorada.
●
NumberOfChars
Número de elementos em Chars, Qualities e CharBoxes.
●
Chars
Série de caracteres lidos da placas (exclui decorativos).
●
Qualities
Série de caracteres não-decorativos das qualidades.
●
IsGrammarOk
Não zero (C) ou VERDADE (C#) se a placa é obediente com o
formato de qualquer país configurado.
●
AvgQuality
A qualidade média do caracteres lidos. Um valor mais grande que
0,97 é um resultado bom. Um valor menos que 0,92 é um
resultado pobre.
●
NumberOfUnknownChars
Número de caracteres que não podiam ser reconhecidos
figuram como ''?” na licença decorada.
●
Country String contendo o país que aceita a placa como válida.
●
Roi
Série contendo a esquerda, topo, correto, e fundo (nesta ordem)
de um o retângulo que contém a placa na imagem de entrada.
●
PlateImage
Quercus Technologies
Imagem da placa extraida da imagem de entrada.
33
SmartLPR Engine
●
Manual do Usuário
BoundingBox
Programação
Série contendo os pontos superior-esquerda, superior-direito,
inferior-direito, inferior-esquerdo aponta (nesta ordem) que
especifica as coordenadas do unir orientado retângulo de caixa
que contém a placa na imagem4de entrada.
●
CharBoxes
Série contendo os retângulos de cada caráter na placa. As
coordenadas de retângulo são relativas a PlateImage.
●
CodePage
Os membros de dados "License" e "Chars" são codificados como
um único valor de código de oito-bit usando esta página de
código.
●
BestImage
Armazena o índice com base em zero da melhor imagem onde foi
achada a placa (ou a com a mais alta qualidade). É usado em
processo de leitura multi-imagem.
10.1.5. Engine
C:
Não existe.
C#:
classe Engine.
Em C, o objeto "Engine" é representado pelo parâmetro "handle" que é usado em cada função
relacionada com o reconhecimento de placa.
Em C# todas estas funções são contidas na classe Engine como métodos públicos.
4 Estes pontos podiam ser negativos (fora dos limites da imagem) se a placa é perto da fronteira de imagem. O
operador é responsável usar estes pontos corretamente, por exemplo em pintar a caixa de selecção na imagem.
Quercus Technologies
34
SmartLPR Engine
Manual do Usuário
Programação
10.2. Definições das funções
Todas as funções abaixo são seguras para threads.
Para lucrar de vantagens de
multithreading, você deve usar um "engine" por thread. Veja o MultiThreadSample localizado
na pasta "Samples/" para mais informações e um exemplo de uso.
10.2.1. Initialize
Initializa um Engine e carrega o arquivo de configuração.
C:
SmartLPRError SmartLPRInitialize(int &handle)
C#:
EngineError Engine::Initialize()
Em C, tem um propósito duplo: criando uma nova instança de Engine e iniciação. O parâmetro
"handle" deve ser usado como entrada em outras funções de SmartLPR.
Valor de retorno:
Esta função retorna um código de erro.
Veja também:
Terminate
10.2.2. Ler placa
Retorne a placa que figura em um buffer de dados.
C:
SmartLPRError SmartLPRReadLicense (int handle, int height, int width, int
lineWidth, void* data, SmartLPRLicense* license)
C#:
EngineError Engine::ReadLicense(int height, int width, int lineWidth,
System.Byte[] data, ref License license)
Parâmetros:
●
handle
Identifica o manipulador que opera no engine você com quer ler.
●
height
Número de linhas da imagem (positivo se linhas são classificadas de cima
para baixo, negativo contrariamente).
●
width
Número de pixeis por linha.
●
LineWidth
Número de bits de memória utilizados por linha.
●
Data
Dados de imagem. As imagens devem ter um plano com 8 bits por pixel.
●
License
Indicação a um objeto reservado da placa, que é enchido com os
resultados de processo de reconhecimento.
Quercus Technologies
35
SmartLPR Engine
Manual do Usuário
Programação
Veja também:
Ler imagem usando o modo multi-imagem, Ler placa de arquivo bmp, Leia placa de ROI
10.2.3. Ler imagem usando o modo multi-imagem
Retorne o melhor resultado (ou um suficientemente bom) de reconhecimento de um conjunto
de imagens (armazendas em buffers) do mesmo veículo.
C:
SmartLPRError SmartLPRReadLicenseMultiImage(int handle, int height, int
width, int lineWidth, int numberOfPictures, void** dataPtrs, SmartLPRLicense*
license)
C#:
EngineError Engine::ReadLicenseMultiImage(int height, int width, int lineWidth,
int numberOfPictures, System.IntPtr[] dataPtrs, ref License license)
Parâmetros:
●
handle
Identifica o manipulador que opera no motor com que você quer
ler.
●
Height
Número de linhas da imagem (positivo se linhas são classificadas
de cima para baixo, negativo contrariamente).
●
width
Número de pixels por linha.
●
lineWidth
Número de bytes de memória usou por linha.
●
numberOfPictures
Número de imagens.
●
dataPtrs
Ponteiro a uma série de ponteiros de dados de imagem. As
imagens devem ter um plano com 8 bits por pixel.
●
license
Indicação a um objeto reservado da placa, que é enchido com os
resultados de processo de reconhecimento.
Valor de retorno:
Esta função retorna um código de erro.
Veja também:
Ler placa, Ler placa de arquivo bmp
10.2.4. Ler placa de arquivo bmp
Retorne a placa que figura na imagem.
C:
SmartLPRError SmartLPRReadLicenseFromBmp (int handle, const char* file,
SmartLPRLicense* license)
C#:
EngineError Engine::ReadLicenseFromBmp (string file,ref License license)
Quercus Technologies
36
SmartLPR Engine
Manual do Usuário
Programação
Parâmetros
●
handle
Identifica o manipulador que opera no engine com que você quer ler.
●
file
Nome do arquivo Windows BMP ou JPEG de 24 cor de bits ou escala de
tons de cinza contendo a imagem de um veículo.
●
license
Ponteiro a um objeto License reservado, que é enchido com os resultados
de processo de reconhecimento.
Valor de retorno:
Esta função retorna um código de erro.
Veja também:
Ler placa, Ler imagem usando o modo multi-imagem
10.2.5. Reconhecimento de Multi-placas
Esta função permite lê várias placas figurando num buffer de dados.
C:
SmartLPRError SmartLPRReadMultiLicense(int handle, int height, int width, int
lineWidth, void* data, int *numberOfLicenses, SmartLPRLicense licenseList[])
C#:
EngineError Engine::ReadMultiLicense(int height, int width, int lineWidth,
System.Byte[] data, ref int numberOfLicenses, ref License[] licenseList)
Parâmetros
●
handle
Identifica o handle que opera no engine com que você quer ler.
●
height
Número de linhas de imagem (positivo se linhas são classificadas
de cima para baixo, negativo contrariamente).
●
width
Número de pixels por linha.
●
linewidth
Número de bytes de memória usados por linha.
●
data
Dados de imagem. As imagens devem ter um plano com 8 bits
por pixel.
●
numberOfLicenses
Ponteiro a um inteiro, cujo valor denota o número de placas que
você quer achar na imagem5. Isto é um parâmetro de
entrada/saída.
A função usa este parâmetro para retornar o
número de placas realmente achou (menos ou igual que a valor de
entrada).
●
licenseList
Série de objetos license encheu com resultados de processo de
reconhecimento de cada placa.
5 SmartLPR Engine P100 e S200 só permite o reconhecimento de uma placa em uma
imagem.
Quercus Technologies
37
SmartLPR Engine
Manual do Usuário
Programação
Valor de retorno:
Esta função retorna um código de erro.
Veja também:
Ler placa, Multi reconhecimento de placa usando modo multi-imagem
10.2.6. Multi reconhecimento de placa usando modo multi-imagem
Esta função permite ler várias placas de um conjunto de imagens (armazenadas em buffers).
C:
SmartLPRError SmartLPRReadMultiLicenseMultiImage(int handle, int height, int
width, int lineWidth, int numberOfPictures, void* dataPtrs[], int
numberOfLicenses, SmartLPRLicense licenseList[]);
C#:
EngineError Engine::ReadMultiLicenseMultiImage(int height, int width, int
lineWidth, int numberOfPictures, System.IntPtr[] dataPtrs, ref int
numberOfLicenses, ref License[] licenseList)
Parâmetros:
●
handle
Identifica o manipulador que opera no engine com que você quer
ler.
●
Height
Número de linhas de imagem (positivo se linhas são classificadas
de cima para baixo, negativo contrariamente).
●
width
Número de pixeis por linha.
●
Linewidth
Número de bytes de memória por linha.
●
DataPtrs
Ponteiro a uma série de ponteiro nos dados da imagem. As
imagens devem ter um plano com 8 bits por pixel.
●
numberOfLicenses
Ponteiro a um número inteiro, cujo valor denota o número de
placas que você quer achar na imagem 6. Isto é um parâmetro de
entrada/saída. A função usa este parâmetro para retornar o
número de placas realmente achou (menos que ou iguala ao valor
de entrada).
●
licenseList
Série de objetos License enchidos com resultados de processo de
reconhecimento de cada placa.
Valor de retorno:
Esta função retorna um código de erro.
6 SmartLPR Motor P100 e S200 só permite o reconhecimento de uma placa por imagem.
Quercus Technologies
38
SmartLPR Engine
Manual do Usuário
Programação
Veja também:
Reconhecimento de Multi-placas, Ler imagem usando o modo multi-imagem
10.2.7. Leia placa de ROI
Retorne a placa que figura em um buffer de dados dentro do ROI.
C:
SmartLPRError SmartLPRReadLicenseFromRoi(int handle, int height, int width,
int lineWidth, void* data, SmartLPRRectangle *roi, SmartLPRLicense* license);
C#:
EngineError Engine::ReadLicenseFromRoi(int height, int width, int
lineWidth, System.Byte[] data, System.Drawing.Rectangle roi, ref
License license)
Parâmetros:
●
handle
Identifica o handle que opero no engine com que você quer ler.
●
height
Número de linhas de imagem (positivo se linhas são classificadas de cima
para baixo, negativo contrariamente).
●
Width
Número de pixeis por linha.
●
Linewidth
Número de bytes de memória por linha.
●
data
Ponteiro aos dados da imagem. As imagens devem ter um plano com 8
bits por pixel.
●
roi
Região de interesse (ROI) onde a licença é querida ser achada.
●
license
Ponteiro a um objeto License reservado, que é enchido com os
resultados de processo de reconhecimento.
Valor de retorno:
Esta função retorna um código de erro.
Veja também:
Ler placa, Ler placa de arquivo bmp
10.2.8. Que licença é melhor
Compara dois resultados obtidos de imagens distintos do mesmo veículo.
C:
bool SmartLPRIsLicenseBetter(SmartLPRLicense* left, SmartLPRLicense*
right)
C#:
System.Boolean IsLicenseBetter (License left, License right)
Quercus Technologies
39
SmartLPR Engine
Manual do Usuário
Programação
Parâmetros:
●
esquerda
Objeto License obteve de uma chamada a qualquer versão de
função de ReadLicense.
●
direita
Objeto License obteve de uma chamada a qualquer versão de
função de ReadLicense.
Valor de retorno:
Retorna verdade se a placa esquerda é um melhor resultado que a direita.
10.2.9. Terminate
Esta função termina um Engine e descarrega o arquivo de configuração. É o contrário da
função Initialize e deve ser chamada com o manipulador do engine que você quer terminar.
Seu programa deve chamar esta função antes de terminar. Os usos do manipulador depois que
esta função foi chamada e retornou, são ilegais.
C:
SmartLPRError SmartLPRTerminate(int handle)
C#:
EngineError Engine::Terminate()
Parâmetros:
●
handle
Identifica o manipulador que opera no engine que você quer terminar.
Valor de retorno:
Esta função retorna um código de erro.
Veja também:
Initialize
10.2.10. Carregue imagem
Carrega e inicializa a estrutura SmartLPRImage do arquivo JPG ou BMP. Anote que deve
chamar SmartLPRDestroyImage depois de usar a imagem para remover a alocação do buffer
de dados criado.
C:
SmartLPRError SmartLPRLoadImage(const char* file, SmartLPRImage *pImg)
C#:
EngineError Engine::LoadImage(ref Image pImg, string file)
Parâmetro:
●
file
Nome do arquivo.
●
Pimg
Ponteiro a uma estrutura reservada SmartLPRImage.
Quercus Technologies
40
SmartLPR Engine
Manual do Usuário
Programação
Valor de retorno:
Esta função retorna um código de erro.
Veja também:
Destruir imagem
10.2.11. Criar imagem
Cria uma nova imagem de tamanho width x height.
Anote que deve chamar a função de
DestroyImage depois de usar a imagem para remover a alocação do buffer de dados criado.
Se um imagem vazia foi criada (usando width = 0, height = 0) nenhuma dealocação é
necessitada.
C:
SmartLPRError SmartLPRCreateImage(SmartLPRImage *pImage, int width, int
height)
C#:
SmartLPR.Image Engine::CreateImage(int width, int height)
Parâmetros:
●
pImage
Ponteiro à imagem.
●
width
Largura da imagem desejada.
●
height
Altura da imagem desejada.
Valor de retorno:
Esta função retorna um código de erro.
Veja também:
Destruir imagem, Salvar à arquivo bmp
10.2.12. Salvar à arquivo bmp
Salva a imagem em um arquivo bmp.
C:
SmartLPRError SmartLPRSaveToBmp(SmartLPRImage* pImg, const char*
file)
C#:
EngineError Image::SaveToBmp(System.String file)
Parâmetros:
●
pImg
Ponteiro a uma estrutura SmartLPRImage reservada.
●
File
Nome do arquivo.
Quercus Technologies
41
SmartLPR Engine
Manual do Usuário
Programação
Valor de retorno:
Esta função retorna um código de erro.
10.2.13. Recortar retângulo
Dada uma imagem fonte e uma seção retangular, recorta a imagem gerando um subimage que
contêm a área dada pela seção retangular. Anote que deve chamar SmartLPRDestroyImage
depois de usar a imagem para remover a alocação do buffer de dados na imagem de destino.
C:
void SmartLPRCropRectangle(SmartLPRImage* dstImg, SmartLPRImage*
srcImg, SmartLPRRectangle* roi)
C#:
void Image::CropRectangle (ref Image dstImg, System.Drawing.Rectangle roi)
Parâmetros:
●
dstImg
Imagem de destino.
●
ScrImg
Imagem fonte.
●
roi
Roi a seção retangular para ser recortada.
Veja também:
Salvar à arquivo bmp, Destruir imagem
10.2.14. Destruir imagem
Destruí uma imagem reservada.
C:
void SmartLPRDestroyImage(SmartLPRImage *img)
C#:
Não existe. É implícita no destructor de classe Imagem.
Parâmetros:
●
img
Imagem para que será removida a alocação.
Veja também:
Criar imagem
10.2.15. Executar o mixer
Execute o SLPRMixer.
C:
SmartLPRError SmartLPRRunMixer()
C#:
Engine::EngineError RunMixer()
Quercus Technologies
42
SmartLPR Engine
Manual do Usuário
Programação
Valor de retorno:
Esta função retorna um código de erro.
Quercus Technologies
43
SmartLPR Engine
Manual do Usuário
Programação
10.3. Códigos de erros
A maioria de funções retornam um código de erro. A próxima tabela mostra as descrições de
código de erro.
Etiqueta
Valor
Significado
SLPR_OK
0x0000
Nenhum erro achou.
SLPR_UNEXPECTED_ERROR
0x1001
Erro inesperado achou.
SLPR_INITIALIZED
0x1002
SLPR já foi inicializado.
SLPR_NOT_INITIALIZED
0x1003
SLPR não é inicializado.
SLPR_BAD_IMAGE
0x1004
SLPR_BAD_PARAMETERS
0x1005
Maus parâmetros de função.
SLPR_MIXER_FILE_NOT_FOUND
0x1006
O arquivo de mixer não foi achado o é corrupto.
SLPR_LICENSING_ERROR
0x1007
Erro de licença software o hardware.
SLPR_INSTANCING_ERROR
0x1008
Não são permitidas mais instâncias.
SLPR_READING_DATA_ERROR
0x1009
Erro na leitura de dados.
SLPR_BAD_GLOBAL_SPEC
0x0101
Erros achados no arquivo Global.ini.
SLPR_CORRUPTED_GRAMMAR_FILE
0x0201
O jogo de arquivo de produção não foi achado o é corrupto.
SLPR_BAD_PRODUCTION_SPEC
0x0202
Erro achado numa das produções.
SLPR_CORRUPTED_CALLIGRAPHY_FILE
0x0301
O arquivo de caligrafia *. cal não foi achado o é corrupto.
SLPR_BAD_CALLIGRAPHY_SPEC
0x0302
SLPR_BAD_GRAMMAR_SPEC
0x0303
SLPR_BAD_REGION_GLOBAL_SPEC
0x0401
Má configuração em seção [Global] de arquivo de região.
SLPR_BAD_REGION_CALLIGRAPHY_SPEC
0x0402
Má configuração em seção [Calligraphy] de arquivo de região.
Quercus Technologies
O arquivo de imagem não achou o formato não suportado de
arquivo.
Má configuração em seção [ModelList] de arquivo de caligrafia
*. ini
Má configuração em seção [Grammars] de. arquivo de
caligrafia de ini *. ini
44
SmartLPR Engine
Manual do Usuário
Programação
10.4. Estruturas obsoletas e funções
O séquito é uma lista de estruturas e funções que são obsoletas. Nós mostramos o novos que
deve usar em vez do obsoletos.
Estruturas obsoletas
Novas estruturas
SlprImage
SmartLPRImage
SlprPoint
SmartLPRPoint
SlprRectangle
SmartLPRRectangle
SlprLicense
SmartLPRLicense
SlprErrors
SmartLPRError
Funções obsoletas
Novas funções
SlprInitialize
SmartLPRInitialize
SlprReadLicense
SmartLPRReadLicense
SlprReadLicense2
SmartLPRReadLicenseMultiImage
SlprReadLicenseFromBmp
SmartLPRReadLicenseFromBmp
SlprIsLicenseBetter
SmartLPRIsLicenseBetter
SlprTerminate
SmartLPRTerminate
SlprSaveToBmp
SmartLPRSaveToBmp
SlprCropRectangle
SmartLPRCropRectangle
Quercus Technologies
45
SmartLPR Engine
Manual do Usuário
Programação
Apêndice
11. Apêndice A: Especificações técnicas
Sistemas operacionais Win XP e superior - GNU/Linux.
Linguagens de
programação
C/C++ e .NET
Depende basicamente do estado de conservação da placa e do tamanho da imagem. Por
Tempo de exemplo, com um Dual Core CPU @ 3.2 Ghz, o tempo médio de processamento numa
processamento imagem de pixel 640x480 contendo uma placa em estado correto de conservação é
aproximadamente 15 ms*.
Placa formatada com hífenes e espaços, placa não-formatada, qualidade de cada caráter
Resultados e qualidade média da placa, país, localização da placa na imagem, localização de cada
caráter na imagem, caixa de seleção da placa na imagem, e a imagem da placa extraída.
As placas detectadas Reconhecimento de placas de diferentes países de diferentes continentes
**
Canada (British Columbia), Mexico, USA (Arizona, California, Colorado, Delaware, District
Placas detectadas of Columbia, Florida, Georgia, Illinois, Maryland, New Jersey, New Mexico, New York,
(versão NA)
North Carolina, Oregon, Pennsylvania, South Carolina, Tennessee, Texas, Utah, Virginia,
Washington, West Virginia)
Formato da placa
Uma ou duas linhas de caráteres, retangular ou quadrada.
Os tipos de imagens
suportadas
Tamanho de imagem
Tamanho recomendado
da placa
arquivos bmp e jpg com a profundidade de cor de 8 ou 24 bits, e buffer de dados de 8
bits.
Qualquer tamanho mostrando o tamanho mínimo da placa. Maior é o tamanho, o mais
longo o tempo de processamento será.
140-150 pixeis de primeiro ao último caráter.
*O tempo de processamento pode variar depender do número de países capacitados, os algoritmos e opções que são
usados para procurar a placa.
**Contate-nos para saber os países reconhecidos que já são incluídos em nossos equipamentos. Também os
informaremos sobre os passos à seguir para fazer uma atualização que permite o reconhecimento de seus países
desejados.
Quercus Technologies
46
SmartLPR Engine
Manual do Usuário
Programação
12. Apêndice B: Suporte
Se tem qualquer dúvida sobre configuração ou uso de SmartLPR Engine, não hesite em
contatar nosso departamento de suporte técnico:
●
EUA: +1 201 227 2020
●
Brasil e América latina: +55 (11) 2614 3006 (Ramal 21)
●
EMEA e Asia: +34 977 300 377
Ou por e-mail em: [email protected]
Também pode contatá-nos por nossas páginas da Web:
●
www.quercus.biz
●
www.quercus-technologies.com
●
www.quercus.com.br
Quercus Technologies
47

Documentos relacionados