Spaces:
Sleeping
Sleeping
File size: 1,352 Bytes
ffbdc6a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
from ultralytics import YOLO
import cv2
from sort.sort import *
from util import get_car, read_license_plate, write_csv
from PIL import Image
from micro_ocr import plate_rec
def plate_reader(plate_model,yolo_model,img_path):
mot_tracker = Sort()
# load models
vehicles = [2, 3, 5, 7]
img = cv2.imread(img_path)
detections = yolo_model(img)[0]
detections_ = []
for detection in detections.boxes.data.tolist():
x1, y1, x2, y2, score, class_id = detection
if int(class_id) in vehicles:
detections_.append([x1, y1, x2, y2, score])
# track vehicles
track_ids = mot_tracker.update(np.asarray(detections_))
# detect license plates
license_plates = plate_model(img)[0]
for license_plate in license_plates.boxes.data.tolist():
x1, y1, x2, y2, score, class_id = license_plate
# assign license plate to car
xcar1, ycar1, xcar2, ycar2, car_id = get_car(license_plate, track_ids)
if car_id != -1:
# crop license plate
license_plate_crop = img[int(y1):int(y2), int(x1): int(x2), :]
text = plate_rec(license_plate_crop)
return text, license_plate_crop
|