# esteebaan23/vehicle-license-plate-detection-with-yolo26 architecture

> Architecture diagram of the GitHub repository esteebaan23/vehicle-license-plate-detection-with-yolo26, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/esteebaan23/vehicle-license-plate-detection-with-yolo26
- Repository: https://github.com/esteebaan23/vehicle-license-plate-detection-with-yolo26

## Overview

This repository is a video-based vehicle and license-plate detection pipeline. A user supplies a video and model options; `main.py` reads frames, runs vehicle and plate detection, applies confidence/ROI and optional vehicle-containment filters, optionally extracts plate text, then annotates and writes video frames. It can also log detections to FiftyOne. Geometry helpers support filtering and bounding-box conversion. The README documents these capabilities; some wiring lies in omitted `main.py` lines, so the graph avoids uncertain details such as exact model initialization and filtering call paths.

Main entry points: [`main.py`](https://github.com/esteebaan23/vehicle-license-plate-detection-with-yolo26/blob/main/main.py) (Pipeline Orchestrator), [`process/computer_vision_models/vehicle_detection.py`](https://github.com/esteebaan23/vehicle-license-plate-detection-with-yolo26/blob/main/process/computer_vision_models/vehicle_detection.py) (Vehicle Detection), [`process/ocr_extraction/text_extraction.py`](https://github.com/esteebaan23/vehicle-license-plate-detection-with-yolo26/blob/main/process/ocr_extraction/text_extraction.py) (Text Extraction), [`process/ocr_extraction/ocr.py`](https://github.com/esteebaan23/vehicle-license-plate-detection-with-yolo26/blob/main/process/ocr_extraction/ocr.py) (OCR Processing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_orchestration["Video Pipeline"]
  node_main["Pipeline Orchestrator<br/>[main.py]"]
  node_geometry["ROI &amp; Geometry<br/>[geometry.py]"]
end

subgraph group_vision["Detection"]
  node_vehicle["Vehicle Detection"]
  node_plate["Plate Detection<br/>[main.py]"]
end

subgraph group_ocr["Plate OCR"]
  node_text["Text Extraction<br/>[text_extraction.py]"]
  node_ocr["OCR Processing<br/>[ocr.py]"]
end

subgraph group_outputs["Outputs &amp; Logging"]
  node_annotated["Annotated Video"]
  node_fiftyone["FiftyOne Logging<br/>[main.py]"]
end

node_user(("Video User"))
node_video["Input Video"]
node_yolo["YOLO Runtime"]
node_models["YOLO Weights"]
node_easyocr["EasyOCR"]
node_opencv["OpenCV Video I/O"]
node_fo_service[("FiftyOne Dataset")]

node_user -->|"configures"| node_main
node_user -->|"provides"| node_video
node_main -->|"reads frames"| node_opencv
node_opencv -->|"decodes"| node_video
node_main -->|"requests detection"| node_vehicle
node_vehicle -->|"runs inference"| node_yolo
node_main -->|"runs inference"| node_plate
node_plate -->|"runs inference"| node_yolo
node_vehicle -->|"loads weights"| node_models
node_plate -->|"loads weights"| node_models
node_main -->|"uses ROI helpers"| node_geometry
node_main -.->|"requests OCR"| node_text
node_text -->|"detects text"| node_ocr
node_ocr -->|"reads text"| node_easyocr
node_main -->|"writes annotated frames"| node_opencv
node_opencv -->|"encodes video"| node_annotated
node_main -.->|"dispatches samples"| node_fiftyone
node_fiftyone -.->|"saves dataset"| node_fo_service

click node_main "https://github.com/esteebaan23/vehicle-license-plate-detection-with-yolo26/blob/main/main.py"
click node_geometry "https://github.com/esteebaan23/vehicle-license-plate-detection-with-yolo26/blob/main/process/utils/geometry.py"
click node_vehicle "https://github.com/esteebaan23/vehicle-license-plate-detection-with-yolo26/blob/main/process/computer_vision_models/vehicle_detection.py"
click node_plate "https://github.com/esteebaan23/vehicle-license-plate-detection-with-yolo26/blob/main/main.py"
click node_models "https://github.com/esteebaan23/vehicle-license-plate-detection-with-yolo26/tree/main/models"
click node_text "https://github.com/esteebaan23/vehicle-license-plate-detection-with-yolo26/blob/main/process/ocr_extraction/text_extraction.py"
click node_ocr "https://github.com/esteebaan23/vehicle-license-plate-detection-with-yolo26/blob/main/process/ocr_extraction/ocr.py"
click node_fiftyone "https://github.com/esteebaan23/vehicle-license-plate-detection-with-yolo26/blob/main/main.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_geometry,node_user toneBlue
class node_vehicle,node_plate,node_fo_service toneAmber
class node_text,node_ocr toneMint
class node_annotated,node_fiftyone toneRose
class node_video,node_yolo,node_easyocr,node_opencv toneIndigo
class node_models toneTeal
```

## Components

### Video Pipeline

- [Pipeline Orchestrator](https://github.com/esteebaan23/vehicle-license-plate-detection-with-yolo26/blob/main/main.py): `main.py`
- [ROI & Geometry](https://github.com/esteebaan23/vehicle-license-plate-detection-with-yolo26/blob/main/process/utils/geometry.py): `process/utils/geometry.py`

### Detection

- [Vehicle Detection](https://github.com/esteebaan23/vehicle-license-plate-detection-with-yolo26/blob/main/process/computer_vision_models/vehicle_detection.py): `process/computer_vision_models/vehicle_detection.py`
- [Plate Detection](https://github.com/esteebaan23/vehicle-license-plate-detection-with-yolo26/blob/main/main.py): `main.py`

### Plate OCR

- [Text Extraction](https://github.com/esteebaan23/vehicle-license-plate-detection-with-yolo26/blob/main/process/ocr_extraction/text_extraction.py): `process/ocr_extraction/text_extraction.py`
- [OCR Processing](https://github.com/esteebaan23/vehicle-license-plate-detection-with-yolo26/blob/main/process/ocr_extraction/ocr.py): `process/ocr_extraction/ocr.py`

### Outputs & Logging

- **Annotated Video**
- [FiftyOne Logging](https://github.com/esteebaan23/vehicle-license-plate-detection-with-yolo26/blob/main/main.py): `main.py`

### Other components

- **Video User**
- **Input Video**
- **YOLO Runtime**
- [YOLO Weights](https://github.com/esteebaan23/vehicle-license-plate-detection-with-yolo26/tree/main/models): `models`
- **EasyOCR**
- **OpenCV Video I/O**
- **FiftyOne Dataset**

## Connections

- Video User → Pipeline Orchestrator: configures
- Video User → Input Video: provides
- Pipeline Orchestrator → OpenCV Video I/O: reads frames
- OpenCV Video I/O → Input Video: decodes
- Pipeline Orchestrator → Vehicle Detection: requests detection
- Vehicle Detection → YOLO Runtime: runs inference
- Pipeline Orchestrator → Plate Detection: runs inference
- Plate Detection → YOLO Runtime: runs inference
- Vehicle Detection → YOLO Weights: loads weights
- Plate Detection → YOLO Weights: loads weights
- Pipeline Orchestrator → ROI & Geometry: uses ROI helpers
- Pipeline Orchestrator → Text Extraction: requests OCR
- Text Extraction → OCR Processing: detects text
- OCR Processing → EasyOCR: reads text
- Pipeline Orchestrator → OpenCV Video I/O: writes annotated frames
- OpenCV Video I/O → Annotated Video: encodes video
- Pipeline Orchestrator → FiftyOne Logging: dispatches samples
- FiftyOne Logging → FiftyOne Dataset: saves dataset
