Capture snapshots from a webcam connected to a Raspberry Pi and send them to a Mac on the same local network.
The Raspberry Pi acts as the camera device, while the Mac receives the snapshots for viewing, storage, or later processing.
USB webcam → Raspberry Pi 5 → local network → Mac
The Python prototype captures a frame, keeps a temporary lossless PNG on the Pi, and can send an in-memory JPEG asynchronously to a receiver on the Mac.
See ARCHITECTURE.md for the current format and data-flow decisions.
See docs/SAME_WIFI_WORKFLOW.md for the complete Mac receiver, firewall, network-checking, and continuous-transfer procedure.
For an ordered review of the whole repository, start with review/README.md.
- Capture still images from the USB webcam connected to the Raspberry Pi.
- Send snapshots to a Mac on the same Wi-Fi or Ethernet network.
- Keep the Raspberry Pi setup lightweight and compatible with ARM64.
- Provide a simple, reproducible Python environment for development.
The current test machine is a Raspberry Pi 5 Model B with:
- a four-core ARM Cortex-A76 CPU;
- 4 GB of RAM;
- a 64 GB-class microSD card;
- a generic USB 2.0 camera; and
- 64-bit Debian GNU/Linux.
No NVIDIA GPU or CUDA runtime is required for webcam capture and snapshot transfer.
See HARDWARE.md for the full hardware, operating-system, camera, network, storage, and compatibility inventory.
The Python implementation is a reusable local package managed with
uv:
cd python-stream
uv sync --locked
uv run python -m unittest discover -s tests -v
uv run rpi-vision capture --helpSee python-stream/README.md for its public API, commands, local-path installation, and package layout.
rpi-vision/
├── README.md
├── HARDWARE.md
├── ARCHITECTURE.md
├── PLAN.md
├── review/
├── python-stream/
├── cpp-stream/
└── lessons/
Generated virtual environments, bytecode, tool caches, and build artifacts are excluded from version control.