Obsah:

RoboPhoto - generátor mozaiky pro veřejnost: 4 kroky
RoboPhoto - generátor mozaiky pro veřejnost: 4 kroky

Video: RoboPhoto - generátor mozaiky pro veřejnost: 4 kroky

Video: RoboPhoto - generátor mozaiky pro veřejnost: 4 kroky
Video: Jak začít s Midjourney (1.) 2024, Červenec
Anonim
Image
Image
RoboPhoto - generátor mozaik pro veřejnost
RoboPhoto - generátor mozaik pro veřejnost
RoboPhoto - generátor mozaik pro veřejnost
RoboPhoto - generátor mozaik pro veřejnost

RoboPhoto je generátor fotomozaiky v reálném čase

RoboPhoto vytváří fotomozaiku svých uživatelů - na počkání.

Pomocí moderních digitálních technik, jako je zpracování obrazu, rozpoznávání obličejů a umělá inteligence, je RoboPhoto schopen vytvořit fotomozaiku všech návštěvníků, kteří procházejí kolem a stisknou jeho tlačítko-v reálném čase.

Při každém stisknutí tlačítka se pořídí fotografie osoby, která je po ruce. Každá fotografie je okamžitě naskenována a interpretována pomocí RoboPhoto. Software RoboPhoto poté změní veškerý jednotlivý obrázek - tak, aby se stal součástí většího obrázku, a poté tento upravený obrázek vytiskne na nálepku označenou sadou souřadnic, které označují umístění každé fotografie v rámci tohoto většího obrázku. Každý návštěvník je poté požádán, aby umístil svou vlastní fotografickou samolepku na větší plátno obsahující pouze odpovídající mřížku.

Během provozu RoboPhoto bude vytvořen nový obrázek. Fotomozaika složená z těchto jednotlivých fotografií, které budou napodobovat předem definovaný „cílový obraz“.

RoboPhoto také pracuje v režimu pro jednoho uživatele. Když je takto nakonfigurován, RoboPhoto vytvoří úplnou mozaiku jednoho uživatele.

Zásoby

  • Počítač s Windows 10 s nainstalovanými balíčky Visual Studio a IoT
  • Raspberry Pi 3B+ s nainstalovaným IoT Microsoft Windows 10
  • Barevná tiskárna štítků (Brother VC-500W)
  • Velké červené tlačítko namontované na podstavci pro vstup uživatele
  • Obrazovka HDMI pro zpětnou vazbu od uživatelů
  • Fotoaparát Microsoft Xbox Kinect v2- ukradený mému synovi- k fotografování
  • Síť (Wifi, LAN)
  • Cílová mřížka. List papíru s vytištěnou mřížkou -vyplněný souřadnicemi. Tato papírová mřížka se používá jako plátno, kde mohou návštěvníci nalepit svoji fotografii na určené souřadnice. A tak nakonec společně vytvoří konečný výsledek: nádhernou novou fotomozaiku.

Byla použita kamera Microsoft Kinect 2.0, protože dokáže pořizovat hloubkové snímky. Tato funkce slouží k vytvoření virtuální obrazovky na každém jednotlivém fotografii. Tímto způsobem může RoboPhoto překreslit pozadí na každé jednotlivé fotografii tak, aby odpovídalo barvě cílového kusu v budoucí mozaice.

Krok 1: Jak to funguje

Jak to funguje
Jak to funguje
Jak to funguje
Jak to funguje
Jak to funguje
Jak to funguje
Jak to funguje
Jak to funguje

RoboPhoto je instalace obsahující podstavec s velkým červeným tlačítkem, počítač s připojenou tiskárnou štítků a malé zařízení IoT obsluhující uživatelské rozhraní (obrazovka a tlačítko). V mém případě: RaspBerry 3B+.

  1. RoboPhoto funguje na veřejně přístupném místě a (po zapnutí) funguje samostatně. Při běhu nabádá procházející návštěvníky RoboPhoto, aby zmáčkli jeho velké červené tlačítko.
  2. Kdykoli je toto velké červené tlačítko stisknuto, RoboPhoto pořídí fotografii návštěvníka, který právě stiskl tlačítko fotoaparátem Kinect.
  3. Pak RoboPhoto použije svůj pokročilý A. I. a dovednosti zpracování obrazu, které upraví každou fotografii tak, aby odpovídala kousku v budoucí mozaice. Aby toho bylo dosaženo, RoboPhoto překreslí pozadí každé fotografie tak, aby odpovídalo barvě cílového kusu v předem načteném obrázku. Po úpravě RoboPhoto vytiskne upravenou fotografii na nálepku spolu se sadou souřadnic, které přesně určují umístění této jedné nálepky v mozaice.

  4. Poté je uživatel požádán, aby nálepku umístil na cílový list mozaiky.
  5. A tak - po návštěvě mnoha pleople - vznikne nové umělecké dílo. Chcete -li vytvořit mozaiku, budete potřebovat spoustu jednotlivých kusů. Získal jsem slušné výsledky se 600 kusy

RoboPhoto může také fungovat v režimu pro jednoho uživatele.

V této konfiguraci RoboPhoto vytváří úplnou mozaiku upravených fotografií od jednoho uživatele. Po stisknutí tlačítka RoboPhoto pořídí přibližně> 600 různých fotografií uživatele a poté je všechny upraví a uspořádá tak, aby vytvořily jedinou novou mozaiku vytvořenou podle předem zvoleného cílového obrázku.

Krok 2: Sestavení hardwaru

Sestavení hardwaru
Sestavení hardwaru
Sestavení hardwaru
Sestavení hardwaru

Jak je znázorněno na obrázku výše, počítač Win 10 je připojen ke kameře Kinect. Kinect musí být připojen pomocí USB 3.0. V době, kdy jsem vytvořil RoboPhoto - nebyl k dispozici žádný Raspberry Pi s USB 3.0.*

Počítač se také používá ke zpracování tisku na připojenou tiskárnu štítků. V mém případě Brother VC-500W. Poměrně levná domácí barevná tiskárna štítků. Je to však velmi velmi pomalé. Pokud je to možné, použijte raději profesionální.

Velké červené tlačítko je připojeno k Raspberry Pi 3B+. K GPIO jsou připojeny pouze 4 vodiče. Toto je jediné potřebné pájení provedené v tomto Instructable. Pi také poskytuje zpětnou vazbu našemu návštěvníkovi prostřednictvím 7 '' TFT obrazovky přes HDMI.

Abych to uklidil, postavil jsem dřevěný podstavec, který drží všechny tyto komponenty.

Vedle podstavce ke zdi je umístěn list papíru obsahující cílovou mřížku a souřadnice (A1/A2). Protože tiskárna štítků, kterou jsem použil, byla maximálně šířkou štítku = 2, 5 cm, všechny čtverce v této mřížce měří 2, 5 cm x 2, 5 cm.

*Dnes Raspberry Pi4 nabízí USB3.0. Alse W10 lze spustit na zařízení. Teoreticky by tedy mělo být možné vytvořit RoboPhoto v2.0 bez použití PC. Možná mi Covid '19 poskytne dostatek času na to, abych brzy vydal takový Instructable.

Krok 3: Psaní kódu

Psaní kódu
Psaní kódu
Psaní kódu
Psaní kódu

Kód

RoboPhoto byl vytvořen pomocí VisualStudio jako řešení se dvěma projekty:

  1. Aplikace Windows Forms v počítači hostuje server TCP a zpracovává vstup Kinect
  2. Raspberry Pi 3B+ hostující klienta TCP v aplikaci s hlavičkou UWP (nastavenou jako spouštěcí aplikace), která zvládne události stisknutí tlačítka a poskytne uživateli zpětnou vazbu prostřednictvím 7 '' TFT obrazovky.

Ve výše uvedeném diagramu jsem se pokusil poskytnout vám představu o tom, co moje soft dělá. Visual Studio, které jsem napsal k vytvoření tohoto (absolutně 100% funkčního) řešení RoboPhoto, je součástí tohoto Instructable. Nicméně musím varovat všechny, kteří stahují tento soubor: Kód, který jsem napsal, není zdaleka hezký a často vázán na můj dev-PC. Doporučuji proto všem, aby vytvořili lepší, hezčí a stabilnější řešení.

1drv.ms/u/s!Aq7eBym1bHDKkKcigYzt8az9WEYOOg…

Síť

V ukázkovém kódu je kód Pi nasazen prostřednictvím sady Visual Studio na adresu IPAddress v mé síti. Pravděpodobně byste to měli změnit, aby vyhovovalo vašim vlastním. Chcete -li to provést - klikněte pravým tlačítkem na projekt klienta ARM po otevření řešení v aplikaci Visual Studio, poté vyberte vlastnosti a hodnotu Vzdálený počítač můžete zařadit do IP adresy vašeho vlastního Pi. Také musíte povolit provoz z klienta na server na portu 8123 v bráně Windows Firewall na serveru (PC). Pokud spustíte řešení ze sady Visual Studio, mělo by vás požádat, abyste to udělali pro U.

Při kódování jsem měl spoustu problémů se správnou komunikací W32 a UWP. Začal jsem pracovat pomocí dvou samostatných tříd v klientu a serveru: resp. MyEchoClient.cs (v klientovi ARM) a ConnectionClient.cs (hanlding připojení klienta na serveru).

Soubory mozaiky - vlastní třída

RoboPhoto vytváří mozaiky napodobující cílový obrázek. Tento cílový obrázek a všechny jednotlivé fotografie, které dohromady tvoří budoucí mozaiku, a také některé další vlastnosti každého RoboPhoto jsou uloženy v souborech v souborovém systému. Můj doprovázený kód používá sadu souborů a složek v adresáři c: / tmp / MosaicBuilder. V této složce bude kód číst všechny podsložky s názvem složky, který začíná na [prj_], jako složky projektu mozaiky. Ve všech těchto složkách [prj_] se pokusí otevřít soubor projektu s názvem [_projectdata.txt], který obsahuje všechny informace požadované pro každý projekt.

Takový soubor projektu se skládá z:

  1. úplnou cestu a název souboru cílového obrázku tohoto projektu
  2. úplná cesta, kde jsou uloženy jednotlivé fotografie (kousky) tohoto projektu
  3. Počet sloupců, které bude mozaika obsahovat
  4. Počet řádků, které bude mozaika obsahovat

Ukázkové projekty jsou k dispozici v souboru zip: / slnBBMosaic2 / wfMosaicServerKinect / bin / x86 / Debug / prj_xxx

V kódu serveru C# se veškeré zpracování mozaiky provádí prostřednictvím vlastní třídy: BBMosaicProject.cs

Microsoft Kinect v2.0 - Greenscreen

K fotografování stačí fotoaparát. Ale já jsem použil Microsoft Kinect v2.0 ke kombinaci barevných obrázků a hloubkových obrazů. Tímto způsobem lze vytvořit efekt greenscreen. Pozadí ve všech barevných obrázcích přijatých od Kinectu bude nahrazeno jednotným zeleným povrchem (BBBackgroundRemovalTool.cs).

Do serveru serverproject byl přidán odkaz na Microsoft. Kinect.

EMGU

Protože potřebujeme mít jistotu, že je osoba na fotografii, která byla pořízena při stisknutí tlačítka, byly do RoboPhoto přidány funkce rozpoznávání obličeje.

www.nuget.org/packages/Emgu. CV/3.4.3.3016

Pouze když je na obrázku osoba, zelená obrazovka na tomto obrázku bude nahrazena jednotným barevným povrchem, přičemž barevné kódy budou stejné jako průměrná barva cílového kusu v mozaice, ze které se tento obrázek stane.

Krok 4: Děkuji

Děkuji
Děkuji

Děkuji za přečtení mého Instructable. Toto bylo moje první. Doufám, že sis to užil.

Doporučuje: