Spaces:
Runtime error
Runtime error
| import torch | |
| from transformers import AutoFeatureExtractor, AutoModelForObjectDetection | |
| import cv2 | |
| import pandas as pd | |
| import smtplib | |
| from datetime import datetime, timedelta | |
| import datetime | |
| # Load pre-trained model | |
| model_name = "hustvl/yolos-small" | |
| feature_extractor = AutoFeatureExtractor.from_pretrained(model_name) | |
| model = AutoModelForObjectDetection.from_pretrained(model_name) | |
| def detect_number_plates(image): | |
| # Pre-process image | |
| inputs = feature_extractor(images=image, return_tensors="pt") | |
| # Run object detection | |
| outputs = model(**inputs) | |
| # Extract detected number plates | |
| number_plates = [] | |
| for i, detection in enumerate(outputs): | |
| for j, score in enumerate(detection["scores"]): | |
| if score > 0.5 and detection["labels"][j] == 7: # 7 is the class ID for number plates | |
| x1, y1, x2, y2 = detection["boxes"][j] | |
| number_plates.append((x1, y1, x2, y2)) | |
| return number_plates | |
| def detect_number_plates(image): | |
| # Your code here | |
| pass | |
| def save_to_excel(number_plates): | |
| # Create a pandas DataFrame | |
| df = pd.DataFrame({ | |
| "Date": [datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") for _ in range(len(number_plates))], | |
| "Number Plate": [f"{x1}, {y1}, {x2}, {y2}" for x1, y1, x2, y2 in number_plates] | |
| }) | |
| # Append to existing Excel file or create a new one | |
| try: | |
| existing_df = pd.read_excel("number_plates.xlsx") | |
| combined_df = pd.concat([existing_df, df]) | |
| combined_df.to_excel("number_plates.xlsx", index=False) | |
| except FileNotFoundError: | |
| df.to_excel("number_plates.xlsx", index=False) | |
| def monitor_vehicles(number_plates): | |
| # Load registered number plates from a file or database | |
| registered_plates = pd.read_csv("registered_plates.csv")["Number Plate"].tolist() | |
| # Check each detected number plate | |
| for x1, y1, x2, y2 in number_plates: | |
| number_plate = f"{x1}, {y1}, {x2}, {y2}" | |
| if number_plate not in registered_plates: | |
| # Check if the vehicle has been present for more than 24 hours | |
| try: | |
| existing_df = pd.read_excel("number_plates.xlsx") | |
| vehicle_entries = existing_df[existing_df["Number Plate"] == number_plate] | |
| if len(vehicle_entries) > 0 and (datetime.now() - vehicle_entries.iloc[-1]["Date"]).total_seconds() > 86400: | |
| # Send an alert email | |
| send_alert_email(number_plate) | |
| except FileNotFoundError: | |
| pass | |
| def send_alert_email(number_plate): | |
| # Set up email server | |
| server = smtplib.SMTP("smtp.gmail.com", 587) | |
| server.starttls() | |
| server.login("karthikm@sathkrutha.com", "karthik@1443") | |
| # Send email | |
| subject = "Unregistered Vehicle Alert" | |
| body = f"Unregistered vehicle with number plate {number_plate} has been present for more than 24 hours." | |
| message = f"Subject: {subject}\n\n{body}" | |
| server.sendmail("karthikm@sathkrutha.com", "majjikarthikreddy64@gmail.com", message) | |
| server.quit() | |
| def main(image_path): | |
| image = cv2.imread(image_path) | |
| number_plates = detect_number_plates(image) | |
| save_to_excel(number_plates) | |
| monitor_vehicles(number_plates) | |
| # Example usage | |
| main("/Users/majjikarthikreddy/Downloads/WhatsApp Image 2025-04-10 at 10.29.25.jpeg") |