
Camera Capture
Narzędzie do automatyzacji fotografii produktowej dla sklepu internetowego Trixbrix. Jedno wciśnięcie ENTER w terminalu: aparat Canon EOS M50 robi zdjęcie, AI lokalnie usuwa tło, produkt zostaje wyśrodkowany, w rogu pojawia się logo sklepu, a gotowy plik 3000×3000 ląduje na dysku. Cały cykl trwa około siedmiu sekund - między zdjęciami wystarczy obrócić produkt na stoliku obrotowym. Zobacz repo na GitHubie
Jakie problemy rozwiązuje?
- Każdy nowy produkt w sklepie potrzebuje zdjęć katalogowych - białe tło, wykadrowanie, logo. Ręczna obróbka partii produktów w Photoshopie zajmowała godziny, teraz to kwestia sekund
- Usuwanie tła działa w całości lokalnie na CPU - bez GPU, bez płatnych chmurowych API, zdjęcia nie opuszczają komputera
- Spójny format każdego zdjęcia: wyśrodkowany produkt, stały margines, wymiar 3000×3000
- Surowe zdjęcie z aparatu zapisuje się obok przetworzonego - jeśli automat się pomyli, oryginał czeka na dysku
- Opcjonalny upload prosto do panelu sklepu - galeria produktu aktualizuje się na żywo podczas sesji zdjęciowej
Zobacz w akcji
Po lewej surowe zdjęcie prosto z matrycy aparatu, po prawej to, co narzędzie zapisuje na dysku: 3000×3000, białe tło, wyśrodkowany produkt, logo. Trzy ujęcia z jednej sesji, która trwała około 20 sekund. Kliknij zdjęcie, żeby je powiększyć.
Przed
Po






Technologie
- Python 3.12 - cały pipeline
- python-gphoto2 - sterowanie aparatem Canon i pobieranie zdjęć przez USB
- rembg (model u2netp) + onnxruntime - lokalne usuwanie tła przez AI
- Pillow, numpy i scipy - maski, kadrowanie, wyostrzanie, nakładanie logo
- rich - interaktywny interfejs w terminalu
- requests + python-dotenv - opcjonalny upload do towarzyszącej aplikacji Rails
Jak wyglądała praca nad projektem?
Punktem wyjścia był konkretny, powtarzalny problem: każda partia nowych produktów w sklepie oznaczała sesję zdjęciową i długą, ręczną obróbkę w Photoshopie. Chciałem, żeby cała pętla - zdjęcie, obróbka, zapis - sprowadzała się do jednego klawisza.
Najciekawszą częścią okazało się dopracowanie masek z modelu AI. Surowa maska łapała drobne artefakty - pyłki, krawędzie tła - więc filtruję je po powierzchni. Osobnym wyzwaniem były cienie prześwitujące przez otwory w produkcie: te rozjaśniam do bieli, ale sam produkt zostawiam nietknięty. Wyostrzanie działa selektywnie tylko na produkcie, nigdy na tle - dzięki temu wokół krawędzi nie pojawia się jasna obwódka, która zdradzałaby, że tło było wycinane.
Pipeline pracuje na pełnej rozdzielczości matrycy (24 Mpix) w jednym przebiegu, z jednym finalnym skalowaniem, i działa w całości offline. Na koniec dodałem integrację z aplikacją Rails obsługującą katalog sklepu: zaraz po naciśnięciu migawki narzędzie zgłasza nowe zdjęcie do panelu sklepu (od razu pojawia się tam miejsce na nie), a po zakończeniu obróbki wysyła gotowy plik przez API - podgląd sesji w sklepie aktualizuje się na żywo.
