TGViewer
Machine Learning with Python Machine Learning with Python @codeprogrammer · 68.6K subscribers
Post #4351 3.21K
#YOLOv8 #ComputerVision #TrafficManagement #Python #AI #SmartCity

Lesson: Detecting Traffic Congestion in Road Lanes with YOLOv8

This tutorial will guide you through building a system to monitor traffic on a highway from a video feed. We'll use YOLOv8 to detect vehicles and then define specific zones (lanes) to count the number of vehicles within them, determining if a lane is congested.

---

#Step 1: Project Setup and Dependencies

We need to install ultralytics for YOLOv8 and opencv-python for video and image processing. numpy is also essential for handling the coordinates of our detection zones.

pip install ultralytics opencv-python numpy

Create a Python script (e.g., traffic_monitor.py) and import the necessary libraries.

import cv2
import numpy as np
from ultralytics import YOLO

# Hashtags: #Setup #Python #OpenCV #YOLOv8


---

#Step 2: Model Loading and Lane Definition

We'll load a pre-trained YOLOv8 model, which is excellent at detecting common objects like cars, trucks, and buses. The most critical part of this step is defining the zones of interest (our lanes) as polygons on the video frame. You will need to adjust these coordinates to match the perspective of your specific video.

You will also need a video file, for example, traffic_video.mp4.

# Load a pre-trained YOLOv8 model (yolov8n.pt is small and fast)
model = YOLO('yolov8n.pt')

# Path to your video file
VIDEO_PATH = 'traffic_video.mp4'

# Define the polygons for two lanes.
# IMPORTANT: You MUST adjust these coordinates for your video's perspective.
# Each polygon is a numpy array of [x, y] coordinates.
LANE_1_POLYGON = np.array([[20, 400], [450, 400], [450, 250], [20, 250]], np.int32)
LANE_2_POLYGON = np.array([[500, 400], [980, 400], [980, 250], [500, 250]], np.int32)

# Define the congestion threshold. If vehicle count > this, the lane is congested.
CONGESTION_THRESHOLD = 10

# Hashtags: #Configuration #AIModel #SmartCity


---

#Step 3: Main Loop for Detection and Counting

This is the core of our program. We will loop through each frame of the video, run vehicle detection, and then check if the center of each detected vehicle falls inside our predefined lane polygons. We will keep a count for each lane.

cap = cv2.VideoCapture(VIDEO_PATH)

while cap.isOpened():
success, frame = cap.read()
if not success:
break

# Run YOLOv8 inference on the frame
results = model(frame)

# Initialize vehicle counts for each lane for the current frame
lane_1_count = 0
lane_2_count = 0

# Process detection results
for r in results:
for box in r.boxes:
# Check if the detected object is a vehicle
class_id = int(box.cls[0])
class_name = model.names[class_id]

if class_name in ['car', 'truck', 'bus', 'motorbike']:
# Get bounding box coordinates
x1, y1, x2, y2 = map(int, box.xyxy[0])

# Calculate the center point of the bounding box
center_x = (x1 + x2) // 2
center_y = (y1 + y2) // 2

# Check if the center point is inside Lane 1
if cv2.pointPolygonTest(LANE_1_POLYGON, (center_x, center_y), False) >= 0:
lane_1_count += 1

# Check if the center point is inside Lane 2
elif cv2.pointPolygonTest(LANE_2_POLYGON, (center_x, center_y), False) >= 0:
lane_2_count += 1

# Hashtags: #RealTime #ObjectDetection #VideoProcessing

(Note: The code below should be placed inside the while loop of Step 3)

---

#Step 4: Visualization and Displaying Results
  • ❤ 8
More from @codeprogrammer
  1. Oct 10, 2026📚 Download 10 Python books for FREE: 1. Think Python — O’Reilly https://t.co/X7y3pX68IW 2…
  2. Oct 9, 2026One of the key moments when I truly understood how transformers work: 🧠✨ "Stop thinking o…
  3. Oct 9, 2026🔖 Official PyTorch Tutorials This collection includes: 🫡 PyTorch fundamentals and torch.…
  4. Oct 7, 2026A distinctive bot for subscribing to courses on the most popular educational platforms acr…
  5. Oct 7, 2026Understanding algorithms changes the way you write code. 🧠 This playlist teaches you exac…
  6. Oct 6, 2026🛠 Built an AI app with Cursor, Claude Code or Lovable? Publish it on Zibby (zibby.run), a…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →