Built to order

Automatic Number Plate Recognition using OpenCV

A computer-vision system that detects vehicle number plates in images and video, segments characters and recognizes them with OCR. Built with OpenCV and Tesseract/EasyOCR, it handles Indian plate formats, angle variations and low-light frames — a viva-strong AI project with a live camera demo.

AI & Machine Learning PythonMachine LearningComputer VisionOpenCVImage ProcessingFlaskTesseract OCRSQLiteSoftware
Number plate recognition project thumbnail showing a vehicle image with the detected number plate highlighted and recognized plate text displayed.
More project photos (3)

The problem

The Automatic Number Plate Recognition (ANPR) system is a computer-vision final-year project that automatically detects vehicle registration plates in images and live video, segments the characters and recognizes them with OCR. Built with OpenCV for plate detection and Tesseract/EasyOCR for character recognition, with a Flask web app front end, this number plate recognition project is branded PlateScan and handles Indian plate formats (e.g. MH 12 AB 3456), tilted or skewed plates and low-light frames — exactly the pipeline (detection → segmentation → OCR) that AI/ML viva examiners expect you to explain.

This is a built-to-order project: every deliverable is prepared fresh for you — full source code, report PDF, PPT and viva Q&A — so nothing looks recycled.

SYSTEM FLOW

4 components 4 connections

Live flow
Drag to explore
100%
sensorCamera

Image, video file, or live feed of vehicles.

Follow the working sequence

How it works

  1. A frame is captured from an uploaded image, video file or live camera feed.
  2. Pre-processing: grayscale conversion, bilateral filtering, CLAHE contrast enhancement and adaptive thresholding.
  3. Edge detection (Canny) and contour analysis locate rectangular candidates matching plate aspect ratios; a Haar cascade / contour classifier filters false positives.
  4. The plate region is cropped, deskewed with a perspective transform and normalized.
  5. Character segmentation splits the plate into individual glyphs via contour bounding boxes, handling merged characters with vertical projection analysis.
  6. Tesseract or EasyOCR recognizes each character and returns text with confidence scores.
  7. The result is validated against Indian plate patterns, displayed in the PlateScan dashboard and logged with the snapshot.

Project features

  • Automatic plate localization in images and live webcam/CCTV video streams
  • Character segmentation with contour analysis and projection profiles
  • OCR recognition via Tesseract and EasyOCR with confidence scoring
  • Indian plate format validation (state code, RTO series, registration number)
  • Skew/tilt correction using perspective transforms before recognition
  • Low-light and night-frame enhancement (CLAHE + adaptive thresholding)
  • PlateScan Flask web app: upload image or use live camera, view annotated output
  • Detection log with timestamps, snapshots and recognized text export (CSV)
  • Batch processing mode for evaluating accuracy over a test image set
  • Configurable confidence threshold with manual-review queue for low scores

What is included

  • Complete, commented Python source code (detection, OCR, web app)
  • PlateScan Flask web application with dashboard UI
  • Project report PDF (literature survey, methodology, results, accuracy tables, conclusion)
  • PPT presentation for final review
  • Viva Q&A preparation document (contour theory, OCR internals, OpenCV functions)
  • Sample test image/video set + installation and run guide

Advantages

  • Automatic plate localization in both still images and live webcam/CCTV video streams — no manual cropping needed.
  • Character segmentation with contour analysis and projection profiles, then OCR via Tesseract and EasyOCR with confidence scoring per character.
  • Indian plate format validation (state code, RTO series, registration number) so gibberish OCR output gets flagged instead of accepted.
  • Skew/tilt correction with perspective transforms before recognition, plus low-light and night-frame enhancement (CLAHE + adaptive thresholding).
  • PlateScan Flask web app: upload an image or use the live camera and view the annotated output immediately — strong for a viva demo.
  • Detection log with timestamps, snapshots and CSV export of recognized text, plus a batch mode to evaluate accuracy over a test image set.

Disadvantages

  • Plates with heavy damage, mud cover, decorative fonts or non-standard layouts still defeat OCR — the format validator flags these rather than inventing text.
  • Very low-resolution or heavily occluded plates (glare, partial blockage) reduce accuracy; the system is honest about confidence via the scoring threshold.
  • Validation logic is built for Indian plate formats — foreign or diplomatic plate layouts are not a supported input.
  • There is no vehicle-database (RTO) integration out of the box; recognized text is exported for manual lookup, not matched to owner records.
Components & software requirements
  • Python 3.9+ (NumPy, imutils, scikit-image)
  • OpenCV (plate detection, perspective correction, preprocessing)
  • Tesseract OCR / EasyOCR (character recognition)
  • Flask + HTML/CSS/JS (PlateScan web dashboard)
  • SQLite (detection log storage)
  • Matplotlib (accuracy and timing charts for the report)
Download free synopsis (PDF)

Enter your name and WhatsApp number — the synopsis PDF downloads immediately. We may send occasional project updates on WhatsApp; no spam.

Raj & Kola (2022), Indian License Plate Recognition using Deep Learning, IJCRT 10(11)

Get a quotation