Compare commits
2 commits
40ce7946d5
...
1d99f38876
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d99f38876 | ||
|
|
5e388f7fdc |
2 changed files with 7 additions and 31 deletions
33
README.md
33
README.md
|
|
@ -1,40 +1,21 @@
|
|||
# People Counter with YOLOv8, ByteTrack, and Prometheus
|
||||
|
||||
This project implements a real-time people counting system based on object detection and tracking using [YOLOv8](https://github.com/ultralytics/ultralytics) and [ByteTrack](https://github.com/ifzhang/ByteTrack). It supports **RTSP input**, **in/out counting** using a vertical line, and exposes **Prometheus metrics** for integration with monitoring systems.
|
||||
This project implements a real-time people counting system based on object detection and tracking using [YOLOv8](https://github.com/ultralytics/ultralytics) and [ByteTrack](https://github.com/ifzhang/ByteTrack). It supports **MJPEG input**, **in/out counting** using either a vertical or a horizontal line, and exposes **Prometheus metrics** for integration with monitoring systems.
|
||||
|
||||
## 🚀 Features
|
||||
|
||||
- 🎥 RTSP camera stream input
|
||||
- 🎥 MJPEG camera stream input
|
||||
- 🧠 YOLOv8 person detection
|
||||
- 🔁 ByteTrack object tracking
|
||||
- ➕➖ In/Out counting via virtual vertical line
|
||||
- ➕➖ In/Out counting via virtual line
|
||||
- 📊 Prometheus metrics at `http://localhost:9100/`
|
||||
- 🌐 Streamlit UI for live video and statistics
|
||||
- 🌐 Web UI for live video and statistics
|
||||
|
||||
## Start mediamtx
|
||||
## Start MJPEG stream from webcam
|
||||
|
||||
```
|
||||
mediamtx
|
||||
```
|
||||
|
||||
## Stream webcam
|
||||
|
||||
```
|
||||
ffmpeg \
|
||||
-vaapi_device /dev/dri/renderD128 \
|
||||
-y \
|
||||
-f v4l2 \
|
||||
-framerate 30 \
|
||||
-video_size 1280x720 \
|
||||
-input_format mjpeg \
|
||||
-i /dev/video0 \
|
||||
-vf 'format=nv12,hwupload' \
|
||||
-c:v h264_vaapi \
|
||||
-f rtsp \
|
||||
rtsp://localhost:8554/cam
|
||||
```
|
||||
mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 1280x720 -f 30" -o "output_http.so -p 8080"
|
||||
|
||||
## Run application
|
||||
```
|
||||
streamlit run streamlit_app.py
|
||||
uvicorn main:app --host 0.0.0.0 --port 8000
|
||||
```
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ STREAMS = {
|
|||
"Kasse 2": "http://192.168.11.230:8080?action=stream",
|
||||
}
|
||||
|
||||
FRAME_SKIP = 2
|
||||
model = YOLO("yolo_weights/yolo11n.pt")
|
||||
|
||||
latest_frames = {}
|
||||
|
|
@ -26,7 +25,6 @@ def process_stream(stream_id, url):
|
|||
line_orientation = "vertical"
|
||||
counter = Counter(stream_id, line_orientation, metrics)
|
||||
cap = cv2.VideoCapture(url)
|
||||
frame_idx = 0
|
||||
|
||||
while cap.isOpened():
|
||||
ret, frame = cap.read()
|
||||
|
|
@ -36,9 +34,6 @@ def process_stream(stream_id, url):
|
|||
|
||||
height, width, _ = frame.shape
|
||||
|
||||
frame_idx += 1
|
||||
if frame_idx % FRAME_SKIP != 0:
|
||||
continue
|
||||
|
||||
try:
|
||||
results = model.track(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue