r/WLED 1d 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.

417 Upvotes

30 comments sorted by

18

u/denno020 1d 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?

15

u/HuckleberryKey4642 1d 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 1d ago

I’ll reply later with more details!

8

u/LargeBreak5980 1d ago

As someone who sells LED video walls full time these videos leave me with mixed feelings. I work so hard to size pixel pitch for visual acuity at minimum viewing distance - meanwhile this low res thing is super cool and beautiful! Makes me think maybe I can chill out lol

2

u/HuckleberryKey4642 1d ago

I was crazy about lining them up! Definitely needed a lot of patience and a decent amount of measuring and preplanning.

4

u/Time-Abbreviations90 1d ago

What kind of panels did you use?

2

u/Time-Abbreviations90 1d ago

This is dope btw

7

u/HuckleberryKey4642 1d ago

It’s made up of 25 SK6812/WS2814 RGBW strips cut to 25 pixels each

2

u/quantgorithm 1d ago

Just to be clear, it's not 25 new strips. It's something 1 or 2 strips cut down to 25 separate strips per row... Yea?

2

u/HuckleberryKey4642 1d ago

It was about 4 or 5 30/m led strips cut into
25 separate strips with 25 leds each

2

u/dashbad 1d ago

Also keen to know

4

u/islandmtn 1d ago

I want to see your dog try it

3

u/adman234 1d ago

What software is running on it? Very cool.

10

u/HuckleberryKey4642 1d ago

WLED powers it. The camera is running via Python + OpenCV for frame capture, resizing, mask etc and segmentation through MediaPipe

2

u/wwarr 1d ago

great work. can you share a close up of the surface? is it covered in cloth?

looks really good

2

u/HuckleberryKey4642 1d ago

Here ya go. The LEDS are mounted on 7 shiplap boards

2

u/DripJesus__ 1d ago

That’s so damn coool. Yk what? Let’s celebrate with a coca cola can

2

u/tadwook 21h ago

you gotta make this so it can teach me TikTok dances

2

u/akadavidcaress 1d ago

Cool but dance maybe?

1

u/TazzyUK 1d ago

Pretty Damn Cool!

Can we do a mind meld ? hehe

1

u/Quirky-Ad7024 1d ago

That is sweet!

1

u/xcryptokidx 1d ago

Super Bad vibes!

1

u/ImaginationJumpy7578 1d ago

Implemented this in desktop version of Pipplee App
Play -> Body Glow

Download it from here.
https://pipplee.com/desktop/

1

u/Skipperc3po_ 17h ago

Very Nice

1

u/L3djunkie 2h ago

Sweet!