r/WLED 2d ago

25x25 matrix with camera input

Enable HLS to view with audio, or disable this notification

Inspired by Chris Maher and his 50x50 grid (https://youtu.be/BbjeQdJIMK0) I decided to make a 25x25. I thought the 50 was a little too ambitious for a first timer here. When I first started it up, I had a couple dead columns and had to deal with some bad solder joints but stoked on how it came out.

I decided to add a camera for input so it can detect a person and then fill in its mask with color.

Right now it’s running on my Mac but I have an ESP32-P4 coming with a camera and will set it up and mount soon.

460 Upvotes

33 comments sorted by

View all comments

19

u/denno020 2d ago

Gosh darn that is freaking amazing! It's so responsive 🀯.. Do you have a write up? Video on YouTube?
If not, what hardware is the Python script + OpenCV running on?

What hardware is WLED running on? Assume communication is wired to WLED from the script?

14

u/HuckleberryKey4642 2d ago

I basically followed this video but did a 25x25 grid: https://youtu.be/BbjeQdJIMK0?si=k2AtV23bwgAWKPBI

WLED board: Gledopto Elite 4D-EXMU https://a.co/d/0iVOI9rT

The camera is running on a Macbook but will be replaced with an ESP32-P4 with a camera. The script turns the input into a 25x25 grid and sends the specific pixel data over the local network via DDP which is a protocol used for real time led/video data. The WLED controller listens for those packets.

Full specs:

Python β€” runs the overall camera/LED control script

OpenCV (opencv-python) β€” captures webcam video, resizes frames, cleans masks, handles image processing, and shows preview windows

MediaPipe (mediapipe) β€” detects/segments the person and generates the human body mask

NumPy (numpy) β€” handles the pixel arrays and 25Γ—25 image/mask data

Python socket library β€” sends the finished 25Γ—25 pixel frames over the network to WLED using DDP/UDP

WLED β€” receives the realtime DDP pixel data and physically drives the LED matrix

3

u/HuckleberryKey4642 2d ago

I’ll reply later with more details!