Reconhecimento de placas com o Google Vision

imagem de destaque 8

A Google Cloud Platform é uma plataforma de computação em nuvem criada pela empresa Google, com intuito de facilitar a execução de serviços baseados em nuvem. Junto a esta plataforma encontra-se uma ferramenta poderosa chamada Google Vision. A ferramenta conta com aprendizado de máquina e inteligência artificial. O recurso encapsula modelos avançados de machine learning em uma API REST fácil de usar. Com o Google Vision é possível extrair conteúdo de imagens, reconhecer padrões, detectar objetos, reconhecer formas geométricas e rostos, classificar objetos ou até mesmo transcrever palavras impressas contidas em imagens.

Objetivo

Neste post usarei o OCR (Reconhecimento Óptico de caracteres) para detectar e extrair os caracteres das placas dos veículos e por seguinte consultar os dados do veículo através de uma api do SINESP (Sistema Nacional de Informações de Segurança Pública).

Bibliotecas

Abra o terminal de comandos da Raspberry e execute os seguintes comandos.

Antes de mais nada é necessário fazer a instalação de algumas libs para que o algoritmo funcione. Todo o algoritmo foi desenvolvido na linguagem Python. Os comandos apresentados neste post se referem ao ambiente linux, porém são facilmente encontrados para outros sistemas operacionais. Primeiramente é necessária a instalação do python para executar a aplicação, é possível encontrar o tutorial de instalação aqui. O próximo passo é a instalação da lib referente ao Sinesp. Em seguida faça a instalação da lib Pillow para manipular imagens clicando aqui.

Agora partiremos para a instalação da biblioteca Google Vision e configuração da mesma, clique aqui para criar sua conta e acessar o console. Após concluir esta etapa é necessário cumprir este passo a passo.

Reconhecimento de placas com o Google Vision

Ao concluir o passo a passo será feito o download de um arquivo json contendo as chaves necessárias para o funcionamento adequado do algoritmo. Por fim execute este comando de ativação no terminal de comandos onde [PATH] é o caminho do json que foi feito o download na etapa anterior, seguido do próprio arquivo json. Exemplo:

export GOOGLE_APPLICATION_CREDENTIALS=”/home/user/Downloads/service-account-file.json”

export GOOGLE_APPLICATION_CREDENTIALS=”[PATH]”

Ótimo! Agora que está tudo configurado podemos utilizar a ferramenta de computação em nuvem para analisar as imagens e extrair as informações desejadas.

Algoritmo

Após toda configuração da plataforma, é necessário criar um arquivo de extensão .py para executar a aplicação. Para isso criei o exec.py, clique aqui para acessar o algoritmo. O mesmo funciona de maneira simples, a ideia é tratar a imagem antes de processá-la a fim de diminuir o tempo que a API leva para extrair os dados da imagem. Após a extração é feita a consulta no SINESP, onde é devolvido um json contendo informações como ano, modelo, cor, status da documentação, número do chassis, etc. A fim de um melhor entendimento, a explicação do algoritmo será discorrida em três partes.

Esta função tem o intuito de redimensionar a imagem para diminuir o tamanho em KB, pois quanto menor a imagem, menor é o tempo de processamento para extração das informações. As dimensões escolhidas foram 500×300 pixels, uma vez que em testes, imagens mais largas têm um melhor rendimento para detecção de palavras. Após o redimensionamento o parâmetro Image.BILINEAR contribui com um filtro de interpolação linear em um ambiente 2×2. A nova imagem é salva e a função responsável pelo processamento dos dados recebe a nova imagem como parâmetro.

A função detect_text() é a responsável por consumir a API de visão computacional. Após receber o retorno da API é necessário fazer algumas alterações com intuito de preparar o dado para consultá-lo no SINESP. Para que a consulta ocorra com sucesso é necessário que o número da placa seja enviado sem quebra de linha, espaço ou hífen. Para isso é feito uma manipulação da string recebida e após o tratamento, a variável é passada como parâmetro para a função sinesp().

Após consumir a API, é retornado um json contendo todas as informações do veículo solicitado, por fim algumas informações são selecionadas e impressas no terminal. Para finalizar é criado um loop infinito onde são recebidos os nomes das imagens para verificação das informações referente ao veículo.

Testes

Para testar o funcionamento do algoritmo utilizei algumas imagens baixadas da internet, é possível fazer o download das mesmas aqui. Salve as imagens na mesma pasta que contém o algoritmo. Após executar o arquivo exec.py obteve-se as seguintes respostas.

image1 2

Conclusão

Depois de realizar todos os procedimentos citados, o sistema funcionará de maneira adequada. Façam testes com outras imagens, com ângulos diferentes para notarem o quanto a ferramenta Google Vision é poderosa. A título de curiosidade as primeiras mil fotos mensais não são cobradas, após isso são cobrados valores baixíssimos podendo chegar a custar $0,0006 por foto. Postem nos comentários sobre as aplicações feitas com a ferramenta e eventuais dúvidas.

Veja + conteúdo

Engenheiro Mecatrônico pela Universidade de Franca, ex-engenheiro coordenador de projetos em empresa de Drones, atualmente trabalha na Supervisão de Tecnologias de Apoio a Aprendizagem como Gestor de FabLabs na empresa SESI. Ministra cursos, treinamentos e palestras sobre IoT, Sistemas Embarcados e Indústria 4.0. Participação em congressos nacionais e internacionais tais como: SCE 2017 e CONIC, com papers publicado pela Procedia Computer Science e Elsevier disponíveis na Science Direct. Tem como hobby desenvolver projetos que facilitem o cotidiano e publicar artigos como colaborador do portal Embarcados.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Comentários:
Notificações
Notificar
guest
19 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Luis Gomes
Luis Gomes
11/10/2020 20:33

SINESP não está funcionando… Ocorreu algo?

Allef Anderson Silva
Allef
Reply to  Luis Gomes
13/10/2020 10:39

Essa biblioteca do Sinesp infelizmente foi desativada. Creio que agora existam outras

Romulo Gome
Romulo Gome
08/07/2020 10:35

Olá, tudo certo, não estou conseguindo importar o Vision e o SinespClient, fiz todos os passos e mesmo assim ainda persiste o erro.

Jean
Jean
22/10/2019 12:11

No caso eu queria extrair apenas a imagem da placa recortada da foto do carro, é possível? Como eu faço pra que ele me dê essa informação?

Allef Anderson Silva
Allef
Reply to  Jean
05/06/2020 15:35

É possível sim. Vc consegue fazer isso somente com o opencv ou um dos parâmetros que a função passa é as coordenadas da plana na imagem

joao guilherme
joao guilherme
18/10/2019 22:54

fala mano! belo projeto! aqui esta dando um erro no modulo , sera q estou fazendo algo errado

Bi
Bi
Reply to  joao guilherme
23/10/2019 20:05

Aqui tbm. Ele disse que teve uma atualização na lib e q vai corrigir o código pra voltar a dar certo

Allef Anderson Silva
Allef
Reply to  joao guilherme
05/06/2020 15:33

Fala! Tudo bem. Teve uma atualização da lib, poderia me enviar um email que lhe mando o algorítimo atualizado

B
B
18/10/2019 02:36

Aqui na hora de executar aparece “No module named google.cloud”. Como resolver?

Allef Anderson Silva
Allef
Reply to  B
18/10/2019 11:02

Teve uma atualização da lib. Vou editar o arquivo do github para voltar a dar certo.

B
B
Reply to  Allef
18/10/2019 22:05

Ahhhh, show!

Wagner Loch
Wagner Loch
20/08/2019 21:03

Poxa, que achado. Comecei a estudar o assunto no início do ano pois estou fazendo um TCC relacionado com isso, não estou conseguindo usar a API do Sinesp, ele me retorna uma mensagem dizendo que preciso atualizar o aplicativo, consegue me ajuda com relação a isso? Obrigado! 😀

Allef Anderson Silva
Allef
Reply to  Wagner Loch
21/08/2019 17:38

consigo sim. Me mande um email [email protected]

luan
luan
31/07/2019 01:01

tive que mudar de from google.cloud import vision para from google.cloud import vision
from google.cloud.vision import types porem sempre ta dando placa não encontrada

Carlos Eduardo Affonso Henriques
Carlos Eduardo Affonso Henriques
Membro
15/07/2019 12:32

Que coincidência. A uns 3 dias enviei um artigo como esse só que com o OpenALPR.

Allef Anderson Silva
Allef
Reply to  Carlos Eduardo Affonso Henriques
15/07/2019 12:47

Que bacana. Tenho conhecimento da ferramenta também, ja trabalhei com ela. Bom dimais!

Wagner
Wagner
Reply to  Carlos Eduardo Affonso Henriques
23/10/2019 20:14

Posso ver seu artigo?

Cinesio Moreira Mendes
Cinesio M. Mendes
22/05/2019 11:09

Excelente artigo, principalmente de como utilizar as informações do Sinesp. Um projeto interessante seria ( utilizando como base esse artigo ), um sistema de monitoramento residencial continuo ( e não de uma foto especifica ), para verificar possíveis carros roubados circulando próximo de sua rua.

Allef Anderson Silva
Allef
Reply to  Cinesio M. Mendes
22/05/2019 13:13

É a idéia caro Cinésio, fiz o artigo pensando em deixar o contexto em aberto, de modo que qualquer um consegue atribui-lo a uma aplicação

Talvez você goste:

Séries

Menu