|
1 | 1 | # Overview |
2 | 2 |
|
3 | | -This project contains yet another [Photobooth](https://github.com/saeugetier/photobooth). The software is intended to run on a Raspberry Pi 2 and upwards, but it can run on any linux PC. At least a RPi5 is recommended when using the AI background replacement. A preview image is displayed in capture mode. After countdown, a picture is taken and can be discarded or saved. Saved images can be printed immediately or printed collage image with multiple photos. All saved images are shown on front page when the photobox is idle. |
| 3 | +This project contains yet another [Photobooth](https://github.com/saeugetier/photobooth). The software is intended to run on a Raspberry Pi 3B and upwards, but it can run on any Linux PC. At least a Raspberry Pi 5 is recommended when using the AI background replacement. A preview image is displayed in capture mode. After countdown, a picture is taken and can be discarded or saved. Saved images can be printed immediately or printed as a collage image with multiple photos. All saved images are shown on the front page when the photobox is idle. |
4 | 4 |
|
5 | | -Photo capture is currently only supported via V4L2 camera. In prior version of the software DSLR via GPhoto2 was also supported. This feature has now to be backported after changing from Qt5 to Qt6. Supporting Raspberry Pi Cameras via libcamera is a planned feature. |
| 5 | +Photo capture is supported via multiple camera backends: |
6 | 6 |
|
7 | | -The application is distributed via Flathub. But interested people can compile the software by themselves. Steps are documented. The photobooth application used a [Yocto Linux deployment](https://github.com/saeugetier/poky-photobooth/) in the past. This deployment is deprecated now, because the distribution via flatpak is more convinient. |
| 7 | +| Backend | Camera Types | Notes | |
| 8 | +|---------|-------------|-------| |
| 9 | +| **V4L2** | USB Webcams, capture cards | Standard Linux video interface | |
| 10 | +| **libcamera** | Raspberry Pi Camera Modules | Pi Camera v1/v2/v3, HQ Camera | |
| 11 | +| **GPhoto2** | DSLR, mirrorless cameras | See [supported cameras](http://www.gphoto.org/proj/libgphoto2/support.php) | |
| 12 | + |
| 13 | +The application is distributed via Flathub. But interested people can compile the software by themselves. The photobooth application used a [Yocto Linux deployment](https://github.com/saeugetier/poky-photobooth/) in the past. This deployment is deprecated now, because the distribution via Flatpak is more convenient. |
| 14 | + |
| 15 | +# Installation |
| 16 | + |
| 17 | +## Flathub (Recommended) |
| 18 | + |
| 19 | +The primary distribution method is via Flatpak. Flatpak can be installed on most x86_64 and aarch64 Linux distributions and includes all dependencies. |
| 20 | + |
| 21 | +```bash |
| 22 | +# Install from Flathub |
| 23 | +flatpak install io.github.saeugetier.photobooth |
| 24 | + |
| 25 | +# Run the application |
| 26 | +flatpak run io.github.saeugetier.photobooth |
| 27 | +``` |
| 28 | + |
| 29 | +Or launch via the desktop application menu. |
| 30 | + |
| 31 | +## Raspberry Pi with libcamera |
| 32 | + |
| 33 | +For Raspberry Pi Camera support, ensure your camera is properly configured: |
| 34 | + |
| 35 | +1. Enable the camera in `/boot/firmware/config.txt`: |
| 36 | + ``` |
| 37 | + # For Pi Camera Module 3 |
| 38 | + dtoverlay=imx708 |
| 39 | + |
| 40 | + # For Pi Camera Module 2 |
| 41 | + dtoverlay=imx219 |
| 42 | + |
| 43 | + # For Pi Camera Module 1 |
| 44 | + dtoverlay=ov5647 |
| 45 | + ``` |
| 46 | + |
| 47 | +2. Reboot and verify the camera is detected: |
| 48 | + ```bash |
| 49 | + libcamera-hello --list-cameras |
| 50 | + ``` |
| 51 | + |
| 52 | +3. Install and run the Flatpak as described above. |
| 53 | + |
| 54 | +# Configuration |
| 55 | + |
| 56 | +## Configuration File |
| 57 | + |
| 58 | +The local configuration file is stored in: |
| 59 | +``` |
| 60 | +~/.config/saeugetier/qtbooth.conf |
| 61 | +``` |
| 62 | + |
| 63 | +The file contains all application settings including: |
| 64 | + |
| 65 | +- Selected camera backend and device |
| 66 | +- Neural network runtime settings |
| 67 | +- Printer configuration |
| 68 | +- PIN code for settings menu (default: `0815`) |
| 69 | + |
| 70 | +## Template Files |
| 71 | + |
| 72 | +The local template files for your collage images are stored in: |
| 73 | +``` |
| 74 | +~/.local/share/saeugetier/qtbooth/ |
| 75 | +``` |
| 76 | + |
| 77 | +It contains: |
| 78 | + |
| 79 | +- Background images for the image collages |
| 80 | +- The `Collages.xml` describing all image collages |
| 81 | +- Border images |
| 82 | + |
| 83 | +Templates can be imported from USB storage. All files with extensions `xml`, `jpg`, `png`, `svg` in the folder `layout` will be copied to the local template folder. |
| 84 | + |
| 85 | +For instructions on creating custom templates, see the [README](https://github.com/saeugetier/photobooth#how-to-create-own-templates). |
| 86 | + |
| 87 | +# Basic Instructions |
8 | 88 |
|
9 | | -## Basic Instructions |
10 | 89 | * Type of collage can be selected in the main menu. |
11 | | -* Settings menu can be opened in the main menu page via gears symbol. Passwors is "0815" if enabled |
12 | | -* During snapshot (after selecting a collage type) a live preview is shown. The shutter button will trigger a count down. AI background removal can be enabled via Snapshot Settings |
| 90 | +* Settings menu can be opened in the main menu page via gears symbol. Password is "0815" if enabled. |
| 91 | +* During snapshot (after selecting a collage type) a live preview is shown. The shutter button will trigger a countdown. AI background removal can be enabled via Snapshot Settings. |
13 | 92 | * A preview of the taken photo is displayed after snapshot. The photo can be confirmed or discarded. Effects can be applied to the photo via wizard menu. |
14 | 93 | * A preview of the collage is displayed as the next step. |
15 | | -* next photo is taken afterwards |
16 | | -* when all photos are taken, the collage can be printed out |
| 94 | +* Next photo is taken afterwards. |
| 95 | +* When all photos are taken, the collage can be printed out. |
17 | 96 | * Previous photos and collages can be printed again via the Gallery. |
18 | 97 |
|
19 | 98 | ## Video |
20 | 99 |
|
21 | | -[](https://youtu.be/fB2aQGPT-wg) |
| 100 | +[](https://youtu.be/yZxKuiFJEoE) |
22 | 101 | (Link to Youtube) |
23 | 102 |
|
24 | 103 | # Technology |
| 104 | + |
25 | 105 | ## Software |
26 | | -Framework: Qt 6.5 or higher - [https://qt.io](https://qt.io) |
27 | 106 |
|
28 | | -Background removal neural network execution is handled using either ONNX Runtime or NCNN. Depending on the target hardware architecture, one of these runtime engines may provide better performance. |
| 107 | +**Framework:** Qt 6.5 or higher - [https://qt.io](https://qt.io) |
| 108 | + |
| 109 | +**Distribution:** Flatpak (primary), native builds supported |
| 110 | + |
| 111 | +**Neural Network Runtime:** The application supports real-time background removal using neural networks. Available runtimes: |
| 112 | + |
| 113 | +- ONNX: currently only CPU supported. Runs best on X86 CPU with more than 4 threads. |
| 114 | +- NCNN: runs best on ARM platform (linited to 4 threads) |
29 | 115 |
|
30 | 116 | ## Tested Hardware |
31 | | -Camera: USB Webcam |
32 | 117 |
|
33 | | -Printer: Canon Selphy Photo Printer or a generic printer (via CUPS) |
| 118 | +**Platforms:** |
| 119 | + |
| 120 | +- PC (x86_64) |
| 121 | +- Raspberry Pi 3B, 4, 5 (aarch64). Raspberry Pi 5 for Neural Network recommended. |
| 122 | + |
| 123 | +**Cameras:** |
| 124 | + |
| 125 | +- USB Webcams (V4L2) |
| 126 | +- Raspberry Pi Camera Module v1, v2, v3 (libcamera) |
| 127 | +- Canon EOS 450D or newer (GPhoto2), Nikon cameras untested. |
| 128 | + |
| 129 | +**Printers:** |
| 130 | + |
| 131 | +- Canon Selphy Photo Printer CP910 over WiFi via [go-selphy-cp](https://github.com/saeugetier/go-selphy-cp) |
| 132 | +- Standard inkjet/laser printers via CUPS |
| 133 | + |
| 134 | +**Light/Flash:** |
| 135 | +LED flash can be driven via Raspberry Pi GPIO. Tested configuration: |
| 136 | +- LED Driver: https://www.aliexpress.com/item/14-37-Inch-LED-LCD-Universal-TV-Backlight-Constant-Current-Board-Driver-Boost-Structure-Step-Up/32834942970.html |
| 137 | +- 20W LED: https://www.aliexpress.com/item/1Pcs-High-Power-10W-20W-30W-50W-100W-COB-Integrated-LED-Lamp-Chip-SMD-Bead-DC/32822371892.html |
| 138 | + |
| 139 | +**Display:** A touchscreen connected via HDMI is highly recommended. |
| 140 | + |
| 141 | +**I2C RTC:** If using a Raspberry Pi, it is recommended to use a realtime clock. |
| 142 | + |
| 143 | +**Housing:** Plywood 8mm - Cutting via laser cutter. Template generated with http://festi.info/boxes.py/ |
| 144 | + |
| 145 | +My own housing is documented in a separate git repository: https://github.com/saeugetier/photobooth_hardware |
34 | 146 |
|
35 | | -LED Driver: https://www.aliexpress.com/item/14-37-Inch-LED-LCD-Universal-TV-Backlight-Constant-Current-Board-Driver-Boost-Structure-Step-Up/32834942970.html |
| 147 | +## System Diagram |
36 | 148 |
|
37 | | -20W LED: https://www.aliexpress.com/item/1Pcs-High-Power-10W-20W-30W-50W-100W-COB-Integrated-LED-Lamp-Chip-SMD-Bead-DC/32822371892.html |
| 149 | +``` |
| 150 | + .------------. Current .---------. |
| 151 | + | LED Driver |-------->| 20W LED | |
| 152 | + '------------' '---------' |
| 153 | + ^ |
| 154 | + | |
| 155 | + ENABLE/PWM| .-----------------------. |
| 156 | + | | | |
| 157 | + | | Camera | |
| 158 | + .------------------. | - USB Webcam (V4L2) | |
| 159 | + | Raspi |<------| - Pi Camera | -.-.-,~ . |
| 160 | + | Application | | (libcamera) | ) ( |
| 161 | + | | | - DSLR (GPhoto2) | |_ | |
| 162 | + | based on | '-----------------------' /(_)---`\ |
| 163 | + | QT/Quick | (_ -' |
| 164 | + | | .-------------. ] | |
| 165 | + | | | Touchscreen | | _,') |
| 166 | + | | USB/HDMI | | [_,-'_-'( |
| 167 | + | |---------->| | (_).-' \ |
| 168 | + | | | | / / \ |
| 169 | + '------------------' | | |
| 170 | + | '-------------' |
| 171 | + USB | |
| 172 | + | |
| 173 | + v |
| 174 | + Storage |
| 175 | + _.-----._ |
| 176 | + .- -. |
| 177 | + |-_ _-| |
| 178 | + | ~-----~ | |
| 179 | + | | |
| 180 | + `._ _.' |
| 181 | + "-----" |
| 182 | +``` |
38 | 183 |
|
39 | | -Housing: Plywood 8mm - Cutting via lasercutter. Template generated with http://festi.info/boxes.py/ |
40 | 184 |
|
41 | | -Canon Selphy CP910 photo printer cpnnected via Wifi |
42 | 185 |
|
0 commit comments