All checks were successful
Build MuCaPy Executable / build-and-package (push) Successful in 1m46s
170 lines
4.8 KiB
Markdown
170 lines
4.8 KiB
Markdown
# MuCaPy: Multi-Camera Python🎥🧠
|
|
|
|
[](https://www.python.org/)
|
|
[]()
|
|
[](https://opencv.org/)
|
|
[](https://riverbankcomputing.com/software/pyqt/)
|
|
[]()
|
|
|
|
---
|
|
|
|
## 📌 Overview
|
|
|
|
**MuCaPy** (Multi-Camera Python) is a modern, robust, and user-friendly real-time multi-camera object detection platform powered by **YOLOv4** and **OpenCV**, designed with a professional PyQt5 GUI. It supports both **local** and **network IP cameras**, allows dynamic camera selection, advanced configuration, and comes with a beautiful dark-themed UI. CUDA support ensures high performance where available.
|
|
|
|
---
|
|
|
|
## ✨ Features
|
|
|
|
- 🔁 Connect multiple **local USB or IP cameras**
|
|
- 💡 Real-time **YOLOv4 object detection**
|
|
- 🎛️ Intelligent UI with **PyQt5**, collapsible dock widgets, and tabbed views
|
|
- 📸 Take **screenshots** per camera feed
|
|
- ⚙️ **Model loader** for dynamic YOLO weight/config/class sets
|
|
- 🔌 **Network camera support** with authentication
|
|
- 🖥️ **Hardware monitor** (CPU and per-core utilization via `psutil`)
|
|
- 🖼️ Fullscreen camera views & dynamic layout switcher
|
|
- 💾 Persistent **configuration management**
|
|
- 🧪 **Camera connectivity test tools**
|
|
|
|
---
|
|
|
|
## 📦 Requirements
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
<details>
|
|
<summary><strong>Dependencies:</strong></summary>
|
|
|
|
- Python 3.8+
|
|
- OpenCV (cv2)
|
|
- PyQt5
|
|
- NumPy
|
|
- Requests
|
|
- psutil
|
|
|
|
</details>
|
|
|
|
---
|
|
|
|
## 🚀 Getting Started
|
|
|
|
```bash
|
|
python main.py
|
|
```
|
|
|
|
> ✅ Make sure your YOLOv4 model directory contains `.weights`, `.cfg`, and `.names` files.
|
|
|
|
---
|
|
|
|
## 📁 Model Directory Structure
|
|
This is important! If you dont have the correct directory structure, the model loader won't work.
|
|
|
|
Models are Included in the Git Repository!
|
|
|
|
```bash
|
|
model/
|
|
├── yolov4.cfg
|
|
├── yolov4.weights
|
|
└── coco.names
|
|
```
|
|
|
|
---
|
|
|
|
## 🎮 UI Highlights
|
|
|
|
- **Model Loader**: Easily select model directory
|
|
- **Camera Selection**: Mix and match local/network sources
|
|
- **Layouts**: Switch between 1, 2, 3, 4, or grid layouts
|
|
- **FPS Control**: Adjustable frame rate
|
|
- **Dark Theme**: Developer-friendly aesthetic
|
|
- **Screenshot Button**: Save current camera frame
|
|
- **Hardware Stats**: Monitor CPU load in real-time
|
|
|
|
---
|
|
|
|
## Gitea Worflow Download
|
|
You can actually download Gitea Workflow compiled code that will run on your local machine. But for this to work you need to enter one of the following commands in your terminal:
|
|
```sh
|
|
chmod a+x main # or the name of your compiled file
|
|
```
|
|
|
|
>Note: _This will only work on Linux! **( This is cause of the Gitea Runner (Which runs on Ubuntu!))** If you are on Windows you can compile it yourself with PyInstaller_
|
|
|
|
[](run.mp4)
|
|
|
|
|
|
---
|
|
|
|
## 🔗 Recommended YOLOv4 Model Links
|
|
|
|
- [YOLOv4.cfg](https://github.com/AlexeyAB/darknet/blob/master/cfg/yolov4.cfg)
|
|
- [YOLOv4.weights](https://github.com/AlexeyAB/darknet/releases/download/yolov4/yolov4.weights)
|
|
- [COCO.names](https://github.com/pjreddie/darknet/blob/master/data/coco.names)
|
|
|
|
---
|
|
|
|
## 🔐 Network Camera Example
|
|
|
|
Supports URLs like:
|
|
- `http://192.168.1.101:8080/video`
|
|
- `http://username:password@ip:port/stream`
|
|
|
|
Authentication is optional and can be configured per-camera.
|
|
|
|
---
|
|
|
|
## 🧪 Camera Test Tools
|
|
|
|
- Test connectivity to any selected camera
|
|
- Auto-handle reconnection on failures
|
|
- Preview all selected feeds with drag-and-drop reordering
|
|
|
|
---
|
|
|
|
## ⚙️ Configuration & Persistence
|
|
|
|
This is also Very Important if you have multiple cameras or want to save / delete your settings. You can save your settings to a file and load them later.
|
|
|
|
Settings (last model, selected cameras, layout, FPS, etc.) are saved to:
|
|
|
|
- **Linux/macOS**: `~/.config/mucapy/config.json`
|
|
- **Windows**: `%APPDATA%\MuCaPy\config.json`
|
|
|
|
---
|
|
|
|
## 📸 Screenshot Storage
|
|
|
|
Default directory: `~/Pictures/MuCaPy` (can be changed from the UI)
|
|
|
|
---
|
|
|
|
## 📖 About
|
|
|
|
> _I built MuCaPy to learn about OpenCV, Python, and to have a simple, easy-to-use camera viewer for my Camera Server, since ContaCam doesn't work on my system (not well atleast!)._
|
|
|
|
---
|
|
|
|
## 🔮 To Be Added
|
|
|
|
- **YOLOv5 / YOLOv8 / YOLO-NAS support**
|
|
- **RTSP stream handling** _( Currently works but is fuzzy / crashes easily)_
|
|
- **Real-time performance dashboards**
|
|
- **WebSocket remote monitoring**
|
|
- **Not-so-laggy UI improvements**
|
|
- **Better CUDA implementation**
|
|
|
|
---
|
|
|
|
## 📄 License
|
|
|
|
This Project is currently under a Proprietary Licsence and shouldnt be distributed!
|
|
|
|
---
|
|
|
|
## 🧑💻 Maintainers
|
|
|
|
- 👤 Rattatwinko
|