docs/en/guides/parking-management.md
A parking management system built with Ultralytics YOLO26 detects vehicles in real time to track which parking spaces are occupied or available, then reports live lot occupancy. It pairs YOLO26 object detection with a JSON-defined parking layout so you can monitor a whole lot from a single video stream or camera feed.
<p align="center"> <iframe loading="lazy" width="720" height="405" src="https://www.youtube.com/embed/hsimB10D6Y0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen> </iframe><strong>Watch:</strong> How to Build a Parking Management System with Ultralytics YOLO26 | Real-Time Spot Detection 🚗
</p>| Parking Management System | Parking Management System |
|---|---|
| Parking management Aerial View using Ultralytics YOLO26 | Parking management Top View using Ultralytics YOLO26 |
??? note "Points selection is now easy"
Choosing parking points is a critical and complex task in parking management systems. Ultralytics streamlines this process by providing a tool "Parking slots annotator" that lets you define parking lot areas, which can be utilized later for additional processing.
Step-1: Capture a frame from the video or camera stream where you want to manage the parking lot.
Step-2: Use the provided code to launch a graphical interface, where you can select an image and start outlining parking regions by mouse click to create polygons.
!!! example "Parking slots annotator Ultralytics YOLO"
??? note "Additional step for installing `tkinter`"
Generally, `tkinter` comes pre-packaged with Python. However, if it did not, you can install it using the highlighted steps:
- **Linux**: (Debian/Ubuntu): `sudo apt install python3-tk`
- **Fedora**: `sudo dnf install python3-tkinter`
- **Arch**: `sudo pacman -S tk`
- **Windows**: Reinstall Python and enable the checkbox `tcl/tk and IDLE` on **Optional Features** during installation
- **MacOS**: Reinstall Python from [https://www.python.org/downloads/macos/](https://www.python.org/downloads/macos/) or `brew install python-tk`
=== "Python"
```python
from ultralytics import solutions
solutions.ParkingPtsSelection()
```
Step-3: After defining the parking areas with polygons, click save to store the data as bounding_boxes.json in your working directory — the same filename the management script loads below.
Step-4: You can now run the parking management solution with the code below.
!!! example "Parking Management using Ultralytics YOLO"
=== "Python"
```python
import cv2
from ultralytics import solutions
# Video capture
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("parking management.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize parking management object
parkingmanager = solutions.ParkingManagement(
model="yolo26n.pt", # path to model file
json_file="bounding_boxes.json", # path to parking annotations file
)
while cap.isOpened():
ret, im0 = cap.read()
if not ret:
break
results = parkingmanager(im0)
# print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
```
=== "CLI"
```bash
yolo solutions parking source="path/to/video.mp4" json_file="bounding_boxes.json" show=True
```
!!! note
Create parking zone annotations first using `ParkingPtsSelection()` in Python (Step 2 above), then pass the JSON file to the CLI command.
ParkingManagement ArgumentsHere's a table with the ParkingManagement arguments:
{% from "macros/solutions-args.md" import param_table %} {{ param_table(["model", "json_file"]) }}
The ParkingManagement solution allows the use of several track parameters:
{% from "macros/track-args.md" import param_table %} {{ param_table(["tracker", "conf", "iou", "classes", "verbose", "device"]) }}
Moreover, the following visualization options are supported:
{% from "macros/visualization-args.md" import param_table %} {{ param_table(["show", "line_width"]) }}
Ultralytics YOLO26 provides real-time vehicle detection and monitoring for parking systems, which optimizes the use of parking spaces, reduces congestion, and improves safety through continuous surveillance. Running it on a live camera feed also helps manage traffic flow and minimize vehicle idle time. For the full setup, see the parking management code workflow.
Using Ultralytics YOLO26 for smart parking yields numerous benefits:
Defining parking spaces is straightforward with Ultralytics YOLO26:
The most lot-specific setting is json_file: point it at the parking-region JSON you create with the points annotator to adapt the solution to a new layout. You can further tailor it through the other arguments — set model to a custom-trained detector, restrict detections to specific vehicle classes, adjust the conf and iou thresholds, switch the tracker, use line_width to scale the on-frame labels and occupancy readout, or select the inference device. For related zone-based monitoring, see the object counting guide.
Ultralytics YOLO26 is utilized in various real-world applications for parking lot management, including: