Update app.py
Browse files
app.py
CHANGED
|
@@ -37,15 +37,29 @@ full_plate_model, character_model = load_models()
|
|
| 37 |
# Function to detect and crop license plates
|
| 38 |
def detect_and_crop_license_plate(image):
|
| 39 |
img_bgr = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
|
| 40 |
-
results = full_plate_model(img_bgr)
|
| 41 |
-
|
| 42 |
cropped_images = []
|
|
|
|
| 43 |
for result in results:
|
| 44 |
if hasattr(result, 'boxes') and result.boxes is not None:
|
| 45 |
for box in result.boxes.xyxy:
|
| 46 |
x1, y1, x2, y2 = map(int, box)
|
| 47 |
-
|
| 48 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
|
| 50 |
return cropped_images, img_bgr
|
| 51 |
|
|
|
|
| 37 |
# Function to detect and crop license plates
|
| 38 |
def detect_and_crop_license_plate(image):
|
| 39 |
img_bgr = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
|
| 40 |
+
results = full_plate_model(img_bgr, conf=0.5) # Use a higher confidence threshold
|
| 41 |
+
|
| 42 |
cropped_images = []
|
| 43 |
+
h, w, _ = img_bgr.shape
|
| 44 |
for result in results:
|
| 45 |
if hasattr(result, 'boxes') and result.boxes is not None:
|
| 46 |
for box in result.boxes.xyxy:
|
| 47 |
x1, y1, x2, y2 = map(int, box)
|
| 48 |
+
|
| 49 |
+
# Add padding to the bounding box
|
| 50 |
+
padding = 10
|
| 51 |
+
x1 = max(0, x1 - padding)
|
| 52 |
+
y1 = max(0, y1 - padding)
|
| 53 |
+
x2 = min(w, x2 + padding)
|
| 54 |
+
y2 = min(h, y2 + padding)
|
| 55 |
+
|
| 56 |
+
# Avoid extremely small detections
|
| 57 |
+
if (x2 - x1) > 20 and (y2 - y1) > 20:
|
| 58 |
+
cropped_image = img_bgr[y1:y2, x1:x2]
|
| 59 |
+
|
| 60 |
+
# Resize to a consistent size
|
| 61 |
+
cropped_image = cv2.resize(cropped_image, (224, 224), interpolation=cv2.INTER_LINEAR)
|
| 62 |
+
cropped_images.append(cropped_image)
|
| 63 |
|
| 64 |
return cropped_images, img_bgr
|
| 65 |
|