Cuprins:

RoboPhoto - un generator de mozaic pentru public: 4 pași
RoboPhoto - un generator de mozaic pentru public: 4 pași

Video: RoboPhoto - un generator de mozaic pentru public: 4 pași

Video: RoboPhoto - un generator de mozaic pentru public: 4 pași
Video: Free ₹10,₹40,₹80,₹100 Google Play Redeem Code For Play Store | Free Redeem Code App 2023 #shorts 2024, Noiembrie
Anonim
Image
Image
RoboPhoto - un generator de mozaic pentru public
RoboPhoto - un generator de mozaic pentru public
RoboPhoto - un generator de mozaic pentru public
RoboPhoto - un generator de mozaic pentru public

RoboPhoto este un generator de fotomosaic în timp real

RoboPhoto creează un fotomosaic al utilizatorilor săi - în timp ce așteptați.

Utilizând tehnici digitale moderne precum procesarea imaginilor, recunoașterea feței și inteligența artificială, RoboPhoto este capabil să creeze un fotomosaic al tuturor vizitatorilor care trec și trec apăsând butonul acestuia - în timp real.

De fiecare dată când se apasă butonul, se face o fotografie cu persoana aflată la îndemână. Instantaneu fiecare fotografie este scanată și interpretată de RoboPhoto. Software-ul RoboPhoto va modifica apoi toate imaginile individuale - astfel încât să devină parte a unei imagini mai mari și apoi să imprime această imagine modificată pe un autocolant etichetat cu un set de coordonate care indică locația fiecărei fotografii în cadrul acelei imagini mai mari. Fiecare vizitator este apoi rugat să-și așeze propriul autocolant pe o pânză mai mare care conține doar o grilă corespunzătoare.

În timpul funcționării RoboPhoto, va fi creată o nouă imagine. Un fotomosaic compus din aceste fotografii individuale care vor imita o „imagine-țintă” predefinită.

RoboPhoto funcționează și în modul single-user. Atunci când este configurat în acest fel, RoboPhoto creează un mozaic complet al unui singur utilizator.

Provizii

  • Un PC Windows 10 cu pachete Visual Studio și IoT instalate
  • Un Raspberry Pi 3B + cu Microsoft Windows 10 IoT instalat
  • O imprimantă de etichete color (Brother VC-500W)
  • Un buton mare roșu montat pe un piedestal pentru introducerea utilizatorului
  • Un ecran HDMI pentru feedback-ul utilizatorilor
  • O cameră Microsoft Xbox Kinect v2 - furată de la fiul meu - pentru a face fotografii
  • O rețea (Wifi, LAN)
  • O grilă țintă. O foaie de hârtie cu o grilă imprimată pe ea - umplută cu coordonate. Această grilă de hârtie este utilizată ca pânză unde vizitatorii își pot lipi fotografia pe coordonatele desemnate. Și astfel, în cele din urmă, vor forma împreună rezultatul final: un nou fotomosaic frumos.

A fost folosită o cameră Kinect 2.0 de tip icrosoft, deoarece poate realiza imagini de profunzime. Această caracteristică este utilizată pentru a crea un ecran verde verde pe fiecare fotografie individuală. În acest fel, RoboPhoto poate revopsi fundalul pe fiecare fotografie individuală pentru a se potrivi cu culoarea unei piese țintă din viitorul mozaic.

Pasul 1: Cum funcționează

Cum funcționează
Cum funcționează
Cum funcționează
Cum funcționează
Cum funcționează
Cum funcționează
Cum funcționează
Cum funcționează

RoboPhoto este o instalație care conține un piedestal cu un buton roșu mare pe el, un computer cu imprimantă de etichete atașată și un dispozitiv IoT mic care gestionează interfața utilizatorului (ecran și buton). În cazul meu: un RaspBerry 3B +.

  1. RoboPhoto funcționează într-o locație accesibilă publicului și (după ce a pornit-o) funcționează automat. Atunci când rulează, vizitatorii care trec sunt încurajați de RoboPhoto să apese butonul său roșu mare.
  2. Ori de câte ori este apăsat acel buton roșu mare, RoboPhoto va face o fotografie a vizitatorului care tocmai a apăsat butonul cu camera Kinect.
  3. Apoi RoboPhoto își va folosi A. I. și abilități de procesare a imaginilor pentru a modifica fiecare fotografie pentru a se potrivi cu o piesă din viitorul mozaic. Pentru a realiza acest lucru, RoboPhoto revopseste fundalul fiecărei fotografii pentru a se potrivi cu culoarea unei piese țintă într-o imagine preîncărcată. După editare, RoboPhoto imprimă fotografia editată pe un autocolant împreună cu un set de coordonate care indică locația acestui autocolant în mozaic.

  4. Apoi, utilizatorul este rugat să plaseze autocolantul pe foaia țintă mozaic.
  5. Și astfel - după ce mulți oameni au vizitat - va apărea o nouă piesă de artă. Pentru a crea un mozaic, veți avea nevoie de multe piese individuale. Am obținut rezultate decente care rulează 600 de piese

RoboPhoto poate funcționa și în modul cu un singur utilizator.

În această configurație, RoboPhoto creează un mozaic complet de fotografii editate de la un singur utilizator. După apăsarea butonului, RoboPhoto va realiza aproximativ> 600 de fotografii diferite ale utilizatorului, apoi le va edita și aranja pe toate pentru a forma un singur mozaic nou, creat după o imagine țintă preselectată.

Pasul 2: Asamblarea hardware-ului

Asamblarea hardware-ului
Asamblarea hardware-ului
Asamblarea hardware-ului
Asamblarea hardware-ului

După cum se arată în imaginea de mai sus, computerul Win 10 este conectat la camera Kinect. Kinect trebuie să fie conectat prin USB 3.0. La momentul respectiv, am creat RoboPhoto - nu era disponibil Raspberry Pi cu USB 3.0. *

PC-ul este, de asemenea, utilizat pentru a gestiona imprimarea pe imprimanta de etichete atașată. În cazul meu un Brother VC-500W. O imprimantă de etichete color de uz casnic destul de ieftină. Cu toate acestea, este foarte foarte lent. Folosiți mai bine unul profesional dacă puteți.

Butonul roșu mare este atașat la un Raspberry Pi 3B +. La GPIO sunt atașate doar 4 fire. Aceasta este singura lipire necesară făcută în acest instructabil. Pi oferă, de asemenea, feedback pentru vizitatorii noștri prin intermediul unui ecran TFT de 7 prin HDMI.

Pentru a-l ordona, am construit un piedestal de lemn care conține toate aceste componente.

Lângă soclu, lângă perete, este plasată o coală de hârtie care conține grila-țintă și coordonatele (A1 / A2). Deoarece imprimanta de etichete pe care am folosit-o maximă în funcție de lățimea etichetei = 2, 5 cm, toate pătratele din această grilă măsoară 2, 5cm x 2, 5cm.

* Astăzi, Raspberry Pi4 oferă USB3.0. Alse W10 poate fi rulat pe dispozitiv. Deci, teoretic ar trebui să fie posibil să creați un RoboPhoto v2.0 fără utilizarea unui PC. Poate că Covid '19 îmi va oferi suficient timp pentru a publica în curând un astfel de Instructable.

Pasul 3: Scrierea codului

Scrierea Codului
Scrierea Codului
Scrierea Codului
Scrierea Codului

Cod

RoboPhoto a fost creat cu VisualStudio ca o soluție cu două proiecte:

  1. O aplicație Windows Forms de pe computer găzduiește un server TCP și gestionează intrarea Kinect
  2. Un Raspberry Pi 3B + care găzduiește un client TCP într-o aplicație UWP (setată ca aplicație de pornire) pentru a gestiona evenimentele de apăsare a butonului și pentru a oferi utilizatorului feedback prin ecranul său TFT de 7 ".

În diagrama de mai sus, am încercat să vă dau o idee despre ceea ce face softul meu. Visual Studio pe care l-am scris pentru a crea această soluție RoboPhoto (absolut 100% funcțională) este furnizat împreună cu acest instructabil. Cu toate acestea, trebuie să-i avertizez pe toți cei care descarcă acest fișier: Codul pe care l-am scris este departe de a fi destul de des și legat adesea de dev-PC-ul meu. Așa că îi încurajez pe toți să creeze o soluție mai bună, mai drăguță și mai stabilă.

1drv.ms/u/s!Aq7eBym1bHDKkKcigYzt8az9WEYOOg…

Reţea

În exemplul de cod, codul Pi este implementat prin Visual Studio într-o adresă IP din rețeaua mea. Probabil că ar trebui să schimbi acest lucru pentru a se potrivi cu al tău. Pentru a face acest lucru - faceți clic dreapta pe proiectul client ARM după deschiderea soluției în Visual Studio, apoi alegeți proprietăți și puteți modifica valoarea Mașină la distanță la adresa IP a propriului dvs. Pi. De asemenea, trebuie să permiteți traficul de la client la server pe portul 8123 din Paravanul de protecție Windows de pe server (PC). Dacă rulați soluția din Visual Studio, ar trebui să vă ceară să o faceți pentru U.

În timpul codificării, am avut multe probleme în a obține W32 și UWP să comunice corect. Am funcționat folosind două clase separate în client și server: resp MyEchoClient.cs (în clientul ARM) și ConnectionClient.cs (modificarea conexiunilor clientului pe server).

Fișiere mozaic - clasă personalizată

RoboPhoto creează mozaicuri pentru a imita o imagine țintă. Această imagine-țintă și toate fotografiile individuale care alcătuiesc împreună mozaicul care urmează să fie, precum și alte proprietăți ale fiecărui RoboPhoto sunt stocate în fișiere într-un sistem de fișiere. Codul meu însoțit folosește un set de fișiere și foldere din directorul c: / tmp / MosaicBuilder. În acest folder, codul va citi toate subfolderele cu un nume de folder care începe cu [prj_] ca foldere de proiect mozaic. În toate aceste foldere [prj_] va încerca să deschidă un fișier proiect numit [_projectdata.txt] care conține toate informațiile necesare pentru fiecare proiect.

Un astfel de fișier de proiect constă din:

  1. calea completă și numele de fișier al imaginii țintă a acestui proiect
  2. calea completă în care sunt stocate fotografii individuale (piese) ale acestui proiect
  3. Numărul de coloane pe care le va conține mozaicul
  4. Numărul de rânduri pe care le va conține mozaicul

Exemple de proiecte sunt furnizate în fișierul zip: / slnBBMosaic2 / wfMosaicServerKinect / bin / x86 / Debug / prj_xxx

În codul serverului C #, toată manipularea mozaicului se face printr-o clasă personalizată: BBMosaicProject.cs

Microsoft Kinect v2.0 - ecran verde

Pentru a face doar fotografii, orice cameră va face. Dar am folosit Microsoft Kinect v2.0 pentru a combina imagini color și imagini de profunzime. În acest fel, se poate crea un efect de ecran verde. Fundalul din toate imaginile color primite de la Kinect va fi înlocuit cu o suprafață verde uniformă (BBBackgroundRemovalTool.cs).

O referință la Microsoft. Kinect a fost adăugată la proiectul server.

EMGU

Deoarece trebuie să fim siguri că o persoană este pe fotografia care a fost făcută când a fost apăsat butonul, capacitățile de recunoaștere facială au fost adăugate la RoboPhoto.

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

Doar atunci când o persoană se află în imagine, ecranul verde din această imagine va fi înlocuit cu o suprafață colorată uniformă, cu coduri de culoare egale cu culoarea medie a piesei țintă în viitorul mozaic, această imagine va deveni.

Pasul 4: Mulțumesc

Mulțumesc
Mulțumesc

Vă mulțumesc că ați citit instructabilul meu. Aceasta a fost prima mea. Sper ca ti-a placut.

Recomandat: