Reference for ultralytics/solutions/parking_management.py
Note
This file is available at https://github.com/ultralytics/ultralytics/blob/main/ultralytics/solutions/parking_management.py. If you spot a problem please help fix it by contributing a Pull Request 🛠️. Thank you 🙏!
ultralytics.solutions.parking_management.ParkingPtsSelection
A class for selecting and managing parking zone points on images using a Tkinter-based UI.
This class provides functionality to upload an image, select points to define parking zones, and save the selected points to a JSON file. It uses Tkinter for the graphical user interface.
Attributes:
Name | Type | Description |
---|---|---|
tk | module | The Tkinter module for GUI operations. |
filedialog | module | Tkinter's filedialog module for file selection operations. |
messagebox | module | Tkinter's messagebox module for displaying message boxes. |
master | Tk | The main Tkinter window. |
canvas | Canvas | The canvas widget for displaying the image and drawing bounding boxes. |
image | Image | The uploaded image. |
canvas_image | PhotoImage | The image displayed on the canvas. |
rg_data | List[List[Tuple[int, int]]] | List of bounding boxes, each defined by 4 points. |
current_box | List[Tuple[int, int]] | Temporary storage for the points of the current bounding box. |
imgw | int | Original width of the uploaded image. |
imgh | int | Original height of the uploaded image. |
canvas_max_width | int | Maximum width of the canvas. |
canvas_max_height | int | Maximum height of the canvas. |
Methods:
Name | Description |
---|---|
setup_ui | Sets up the Tkinter UI components. |
initialize_properties | Initializes the necessary properties. |
upload_image | Uploads an image, resizes it to fit the canvas, and displays it. |
on_canvas_click | Handles mouse clicks to add points for bounding boxes. |
draw_box | Draws a bounding box on the canvas. |
remove_last_bounding_box | Removes the last bounding box and redraws the canvas. |
redraw_canvas | Redraws the canvas with the image and all bounding boxes. |
save_to_json | Saves the bounding boxes to a JSON file. |
Examples:
>>> parking_selector = ParkingPtsSelection()
>>> # Use the GUI to upload an image, select parking zones, and save the data
Source code in ultralytics/solutions/parking_management.py
draw_box
Draws a bounding box on the canvas using the provided coordinates.
initialize_properties
Initialize properties for image, canvas, bounding boxes, and dimensions.
Source code in ultralytics/solutions/parking_management.py
on_canvas_click
Handles mouse clicks to add points for bounding boxes on the canvas.
Source code in ultralytics/solutions/parking_management.py
redraw_canvas
Redraws the canvas with the image and all bounding boxes.
Source code in ultralytics/solutions/parking_management.py
remove_last_bounding_box
Removes the last bounding box from the list and redraws the canvas.
Source code in ultralytics/solutions/parking_management.py
save_to_json
Saves the selected parking zone points to a JSON file with scaled coordinates.
Source code in ultralytics/solutions/parking_management.py
setup_ui
Sets up the Tkinter UI components for the parking zone points selection interface.
Source code in ultralytics/solutions/parking_management.py
upload_image
Uploads and displays an image on the canvas, resizing it to fit within specified dimensions.
Source code in ultralytics/solutions/parking_management.py
ultralytics.solutions.parking_management.ParkingManagement
Bases: BaseSolution
Manages parking occupancy and availability using YOLO model for real-time monitoring and visualization.
This class extends BaseSolution to provide functionality for parking lot management, including detection of occupied spaces, visualization of parking regions, and display of occupancy statistics.
Attributes:
Name | Type | Description |
---|---|---|
json_file | str | Path to the JSON file containing parking region details. |
json | List[Dict] | Loaded JSON data containing parking region information. |
pr_info | Dict[str, int] | Dictionary storing parking information (Occupancy and Available spaces). |
arc | Tuple[int, int, int] | RGB color tuple for available region visualization. |
occ | Tuple[int, int, int] | RGB color tuple for occupied region visualization. |
dc | Tuple[int, int, int] | RGB color tuple for centroid visualization of detected objects. |
Methods:
Name | Description |
---|---|
process_data | Processes model data for parking lot management and visualization. |
Examples:
>>> from ultralytics.solutions import ParkingManagement
>>> parking_manager = ParkingManagement(model="yolov8n.pt", json_file="parking_regions.json")
>>> print(f"Occupied spaces: {parking_manager.pr_info['Occupancy']}")
>>> print(f"Available spaces: {parking_manager.pr_info['Available']}")
Source code in ultralytics/solutions/parking_management.py
process_data
Processes the model data for parking lot management.
This function analyzes the input image, extracts tracks, and determines the occupancy status of parking regions defined in the JSON file. It annotates the image with occupied and available parking spots, and updates the parking information.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
im0 | ndarray | The input inference image. | required |
Examples:
>>> parking_manager = ParkingManagement(json_file="parking_regions.json")
>>> image = cv2.imread("parking_lot.jpg")
>>> parking_manager.process_data(image)