Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions Number-Plate-Detection/Numberplatedetection.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import cv2
import os
import time

cascade_path = cv2.data.haarcascades + "haarcascade_russian_plate_number.xml"
plate_cascade = cv2.CascadeClassifier(cascade_path)

if plate_cascade.empty():
raise IOError("Error loading Haar cascade")

# Output directory
os.makedirs("plates", exist_ok=True)

cap = cv2.VideoCapture(0)
if not cap.isOpened():
raise IOError("Cannot open webcam")

plate_count = 0
last_save_time = 0
save_delay = 0.5

while True:
ret, frame = cap.read()
if not ret:
break

frame = cv2.resize(frame, (960, 540))
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
gray = cv2.equalizeHist(gray)
gray = cv2.bilateralFilter(gray, 11, 17, 17)

roi = gray[270:540, :]
plates = plate_cascade.detectMultiScale(
roi,
scaleFactor=1.05,
minNeighbors=7,
minSize=(60, 20)
)

current_time = time.time()

for (x, y, w, h) in plates:
y += 270
aspect_ratio = w / h

if 2 < aspect_ratio < 5:
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)

if current_time - last_save_time > save_delay:
plate_count += 1
plate_img = frame[y:y+h, x:x+w]
cv2.imwrite(f"plates/plate_{plate_count}.jpg", plate_img)
last_save_time = current_time

cv2.imshow("Number Plate Detection", frame)

if cv2.waitKey(1) & 0xFF == ord("q"):
break

cap.release()
cv2.destroyAllWindows()
40 changes: 40 additions & 0 deletions Number-Plate-Detection/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Number Plate Detection 🚘🔍

This project is a simple **Number Plate Detection** system built using **Python** and **OpenCV**.
It uses classical image processing techniques and OpenCV’s **built-in Haar Cascade classifier** to detect vehicle number plates in real time using a webcam.

---

## 📸 Demo

![Demo Screenshot](https://github.com/user-attachments/assets/fd6d233e-a948-4015-aab3-50ec09ac9f75)

---

## 🧠 Features

- Real-time number plate detection using webcam
- Uses OpenCV’s built-in Haar Cascade classifier
- Draws bounding boxes around detected number plates
- Lightweight and beginner-friendly
- Can be extended for OCR (text extraction)

---

## 🛠️ Technologies Used

- Python 3.x
- OpenCV

---


## 📁 Project Structure

```
Number-Plate-Detection/
├── Numberplatedetection.py # Main script
└── README.md # Project documentation
```

Loading