Pular para o conteúdo

Reconhecimento de placas de veículos com OpenALPR

Atualmente desempregado, estou precarizado tentando arrumar uns bicos. E recentemente arranjei um bico para fazer um sistema de automação de estacionamentos baseado em software livre e empregando dispositivos de baixo custo, que no caso será o Raspberry Pi 4.
Carlos Affonso Henriques. CapitainKurn
Hits: 11.655 Categoria: Python Subcategoria: Outros
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Open ALPR

Embora já haja desenvolvido soluções de hardware e software voltadas para automação de tráfego, sinalização semafória e detecção de incidentes, nunca precisei fazer nada para registrar placas de veículos.

Inicialmente pensei em fazer um OCR com o OpenCV e Tesseract, mas não obtive muito bons resultados, a leitura das placas as vezes era imprecisa e eu estava sem tempo para estudar o Tesseract mais a fundo e pesquisando sobre o assunto deparei-me com o OpenALPR ( Automatic Licence Plate Recognition ), um serviço em nuvem muito bom com uma taxa de acerto muito próxima de 100%, sendo inclusive atualmente empregado para sistemas de multagem não só no Brasil como também Canadá, EUA, Europa e Oceania.

Embora ele também seja baseado no Tesseract e OpenCV, há muitos refinamentos para garantir a precisão do serviço. Ele tem um aprendizado de máquina que identifica inclusive marca/modelo e cor do veículo, incluindo motocicletas, se bem que no caso das motos a identificação de marca/modelo não funciona muito bem, apenas com motocicletas grandes como Honda Goldwing, Ducati Monster, Triumph Rino, Yamaha Vmax e Harley Glide.

O site do serviço é http://www.openalpr.com/ e dispõe de diversos planos que vão desde o gratuito até o enterprise, que é indicado para DETRANS e prefeituras de cidades grandes como Rio ou São Paulo. Não vou adentrar nos recursos dessa API pois no site há farta documentação, assim como há serviços adicionais, tais como rastreio visual de veículos que em cidades com forte aparato de vigilância pode inibir o roubo de cargas, contornando o problema dos jammers empregados pelos ladrões.

Fiz um pequeno programa em Python 3.6 a caráter de demonstração, que inclusive o usarei como parte da solução de estacionamento e compartilho com vocês, podem usar a vontade e como quiserem! Como eu costumo dizer a licença não é GPL é LPG (Liberado Para Geral) Rssss.

Código

import requests
import base64
import json
import time
import sys


IMAGE_PATH=str(sys.argv[1])
SECRET_KEY = 'sk_DEMODEMODEMODEMODEMODEMO'


with open(IMAGE_PATH, 'rb') as image_file:
    img_base64 = base64.b64encode(image_file.read())
    url = 'https://api.openalpr.com/v2/recognize_bytes?recognize_vehicle=1&country=br&secret_key=%s' % (SECRET_KEY)
    r = requests.post(url, data = img_base64)
    obj=r.json()

Placa=obj ["results"][0]["plate"]
TimeStamp=obj["epoch_time"]/1000
Cor=obj["results"][0]["vehicle"]["color"][0]["name"]
Modelo=obj["results"][0]["vehicle"]["make_model"][0]["name"]
DateTime=(time.gmtime(TimeStamp))

print (time.strftime('%Y-%m-%d_%H:%M:%S', DateTime), Placa, Modelo, Cor)

A Kombi velha

Para ilustração vamos usar a foto dessa Kombi velha. A escolhi para a PDC ( gostam de chamar de POC mas prefiro PROVA DE CONCEITO ) pelo fato da placa não estar muito legível e ainda estar em perspectiva. Isso demostra muito bem a qualidade deste serviço formidável. Agora experimente!

Rode o programinha!

python3.6 openalpr.py kombi.jpg

Para os fãs de shell script que não quiserem usar Python:

#!/bin/bash

curl -s -X POST -F image=@$1 'https://api.openalpr.com/v2/recognize?recognize_vehicle=1&country=br&secret_key=sk_DEMODEMODEMODEMODEMODEMO' \
| sed -e 's/[{}]/''/g' -e 's/"results": &#92;[//g' | awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' &#92;
| grep -w '"plate"&#92;|"epoch_time"' | head -n 2

Após salvar o seu shell script...

openalpr.sh kombi.jpg

Espero que tenham gostado e se gostaram muito me contratem, pois estou precisando.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
   1. Open ALPR

Autenticando Documento com Blockchain e Ethereum

Impedindo o compartilhamento de conexão

Docker: Uma abordagem didática para tempos obscuros

L7-filter (funcionando) no Slackware 10.2

Enviando e-mail pelo shell com smtp remoto

paramiko - Python + SSH

rwd - Restart When Down

Scikit Learn: Projetando o futuro de suas APIs e aplicativos usando machine learning

Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante

Como baixar fotos e vídeos do Instagram com Python

#1 Comentário enviado por fabio em 15/04/2020 - 23:48h
Top demais! Obrigado por compartilhar.
#2 Comentário enviado por CapitainKurn em 16/04/2020 - 12:15h

[1] Comentário enviado por fabio em 15/04/2020 - 23:48h

Top demais! Obrigado por compartilhar.

Por nada Fábio. Contribúo com o VOL desde 2003 fiquei meio parado por algum tempo mas vou aumentar a frequencia de minhas contribuições.

Contribuir com comentário

Entre na sua conta para comentar.