Este repositório contém um projeto completo para reconhecimento de placas de veículos utilizando uma versão customizada e corrigida do OpenALPR. A aplicação identifica placas em imagens, consulta uma API externa (wdapi2.com.br) para obter dados do veículo e, caso a placa esteja em uma lista de restrição (ex: roubados), envia um alerta detalhado para o Telegram com a foto e os dados consultados.
(Este README foca na versão MeuProjetoALPR que processa imagens estáticas. Para a versão em tempo real com webcam para Raspberry Pi, veja o diretório MeuProjetoALPR_RASP/).
O projeto está organizado da seguinte maneira:
.
├── README.md <-- Este guia
├── openalpr/ <-- O código-fonte corrigido do OpenALPR
├── MeuProjetoALPR/ <-- Código que realiza a leitura de uma imagem
├── build/ <-- Pasta para compilação (necessita cacert.pem aqui!)
├── media/
│ └── carro_teste.jpg <-- Imagens para testes
├── src/
│ └── main.cpp <-- O código-fonte da sua aplicação
│ └── json.hpp <-- Biblioteca nlohmann/json (NECESSÁRIO AQUI)
└── CMakeLists.txt <-- O "roteiro" de compilação da sua aplicação
├── Local_da_Camera.txt <-- Configuração de localização da câmera
├── PLACAS_ROUBADAS.txt <-- Lista de placas roubadas
├── capturas <-- Arquivo onde são guardadas as fotos identificadas como de carros roubados
└── PBT5340_20251027_201925
├── MeuProjetoALPR_RAS/ <-- Código para aplicação na RASP
└── README.md <-- Documentação específica da aplicação
├── build/ <-- Pasta para compilação (necessita cacert.pem aqui!)
├── media/
│ └── carro_teste.jpg <-- Imagens para testes
├── src/
│ └── main.cpp <-- O código-fonte da sua aplicação de captura periódica
│ └── json.hpp <-- Biblioteca nlohmann/json (NECESSÁRIO AQUI)
└── CMakeLists.txt <-- O "roteiro" de compilação da sua aplicação
Este guia assume que você já tem o WSL2 instalado com uma distribuição Ubuntu.
Primeiro, vamos garantir que todos os pacotes do seu sistema estão atualizados. Abra o terminal do WSL e execute:
🖥️ Linguagem: Bash
sudo apt update && sudo apt upgrade -y
Para compilar o OpenALPR e o nosso projeto, precisamos de várias bibliotecas e ferramentas. Este comando instalará tudo de uma vez.
🖥️ Linguagem: Bash
sudo apt install -y build-essential cmake git pkg-config \
libopencv-dev libtesseract-dev \
liblog4cplus-dev libcurl4-openssl-devEste projeto usa a biblioteca nlohmann/json para processar a resposta da API de consulta. Esta etapa já foi feita, caso não haja arquivo no src, realize-a:
- Baixe o arquivo json.hpp mais recente: Vá para https://github.com/nlohmann/json/releases, encontre a última release e baixe o arquivo json.hpp (geralmente listado nos "Assets").
- Copie o arquivo json.hpp para dentro da pasta MeuProjetoALPR/src/.
A. 🛠️ Ferramentas de Compilação:
- build-essential: Pacote fundamental que inclui o compilador C++ (g++) e a ferramenta make.
- cmake: Gerenciador do processo de compilação.
- git: Para clonar o repositório.
- pkg-config: Ajuda o cmake a encontrar as bibliotecas instaladas.
B. 📚 Dependências do OpenALPR:
- libopencv-dev: Biblioteca de Visão Computacional (essencial para processamento de imagem).
- libtesseract-dev: Biblioteca de OCR (para "ler" os caracteres da placa).
- liblog4cplus-dev: Usada pelo OpenALPR para registrar logs.
- libcurl4-openssl-dev: Usada para funcionalidades de rede.
C. 💬 Dependências do Bot Telegram e consulta a API:
- libcurl4-openssl-dev -y: Biblioteca para chamadas à API notificação do TELEGRAM.
- nlohmann/json: Processamento de Resposta API
Antes de compilar e executar MeuProjetoALPR, alguns arquivos e tokens precisam ser configurados:
- Certificado SSL (cacert.pem):
- Para que a chamada à API de consulta (wdapi2.com.br) seja segura (HTTPS), precisamos de um arquivo de certificados CA.
- Baixe o cacert.pem mais recente em: https://curl.se/docs/caextract.html
- CRÍTICO: Coloque este arquivo cacert.pem dentro da pasta MeuProjetoALPR/build/. Você precisará fazer isso antes de executar o programa (e novamente se limpar a pasta build).
- Arquivos de Dados (na Raiz PROJETO_SOE): -ertifique-se de que os arquivos PLACAS_ROUBADAS.txt (com uma placa por linha) e Local_da_Camera.txt (com DESCRICAO:, LATITUDE:, LONGITUDE:) existem na pasta raiz do projeto (PROJETO_SOE/) e estão preenchidos corretamente. Como o OpenALPR não está mais nos repositórios recentes do Ubuntu e requer correções para funcionar com bibliotecas modernas, vamos compilá-lo a partir do código-fonte que está na pasta Bibliotecas/.
Assumindo que você está na raiz do repositório clonado:
🖥️ Linguagem: Bash
cd Bibliotecas/openalpr/src/É uma boa prática compilar projetos em uma pasta separada para não sujar o diretório do código-fonte.
🖥️ Linguagem: Bash
mkdir build
cd buildAgora, vamos configurar, compilar e instalar a biblioteca. A compilação (make) pode demorar vários minutos.
🖥️ Linguagem: Bash
# 1. Configura o projeto:
cmake ..
# 2. Compila o código usando todos os núcleos do seu processador:
make -j$(nproc)
# 3. Instala a biblioteca no sistema:
sudo make install
# 4. Atualiza o cache de bibliotecas do sistema, para ser acessado como função base:
sudo ldconfigSe tudo correu bem, o comando alpr agora deve estar disponível no seu sistema. Verifique a instalação com:
🖥️ Linguagem: Bash
alpr --version
Você deverá ver a versão do OpenALPR instalada.
Agora que a biblioteca OpenALPR está instalada e pronta para ser usada, vamos compilar a nossa aplicação customizada que a utiliza.
Volte para a raiz do repositório e entre na pasta MeuProjetoALPR.
🖥️ Linguagem: Bash
# Se você ainda está em 'openalpr/src/build', volte 4 níveis:
cd ../../../../MeuProjetoALPR/Assim como antes, vamos usar uma pasta build dedicada.
🖥️ Linguagem: Bash
cd buildO CMakeLists.txt deste projeto já está configurado para encontrar e usar a biblioteca OpenALPR que acabamos de instalar.
🖥️ Linguagem: Bash
# 1. Configura o projeto
cmake ..
# 2. Compila a sua aplicação (será bem rápido)
makeSe a compilação terminar sem erros, um executável chamado meu_alpr terá sido criado dentro da pasta build.
Para rodar a aplicação, execute o programa a partir da pasta build, passando o caminho da imagem de teste como argumento.
🖥️ Linguagem: Bash
./meu_alpr ../media/foto_placa1.jpeg📊 Saída Esperada:
X placas carregadas do arquivo.
Localizacao da camera carregada: Camera 01 - LOC
Analisando Placa 1...
- Tentativa 1: GZN1B34 (Confianca: 92.541%)
>>> ALERTA: Placa 'GZN1B34' encontrada na lista de roubados!
Consultando API para detalhes do veiculo...
Consulta a API realizada com sucesso para placa: GZN1B34
ACAO: Enviando notificacao as autoridades e ao proprietario!
Alerta enviado para o Telegram com sucesso!