Cuprins:
- Provizii
- Pasul 1: Cum funcționează
- Pasul 2: Asamblarea hardware-ului
- Pasul 3: Scrierea codului
- Pasul 4: Mulțumesc
Video: RoboPhoto - un generator de mozaic pentru public: 4 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:42
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ă
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 +.
- 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.
- 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.
-
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.
- Apoi, utilizatorul este rugat să plaseze autocolantul pe foaia țintă mozaic.
- Ș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
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
Cod
RoboPhoto a fost creat cu VisualStudio ca o soluție cu două proiecte:
- O aplicație Windows Forms de pe computer găzduiește un server TCP și gestionează intrarea Kinect
- 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:
- calea completă și numele de fișier al imaginii țintă a acestui proiect
- calea completă în care sunt stocate fotografii individuale (piese) ale acestui proiect
- Numărul de coloane pe care le va conține mozaicul
- 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
Vă mulțumesc că ați citit instructabilul meu. Aceasta a fost prima mea. Sper ca ti-a placut.
Recomandat:
DISTRIBUITOR AUTOMAT DE ALIMENTE PENTRU ANIMALE PENTRU ANIMALE PENTRU ANIMALE: 9 pași
DISTRIBUITOR AUTOMAT DE ALIMENTE PENTRU ANIMALE: Ai simțit vreodată că ai pierdut prea mult timp hrănindu-ți animalul? A trebuit vreodată să suni pe cineva să-ți hrănească animalele de companie în timp ce erai în vacanță? Am încercat să rezolv aceste două probleme cu proiectul meu actual de școală: Petfeed
Lumina reactivă pentru muzică -- Cum să faci lumină reactivă pentru muzică super simplă pentru a face desktop-ul grozav .: 5 pași (cu imagini)
Muzică lumină reactivă || Cum să facem muzică super simplă lumină reactivă pentru a face desktopul grozav. basul care este de fapt semnal audio de joasă frecvență. Este foarte simplu de construit. Vom
ESP8266 și public "MQTT Broker HiveMQ &Node-RED" gratuit ": 6 pași (cu imagini)
ESP8266 & Public "MQTT Broker HiveMQ &Node-RED": Protocolul MQTT a luat o forță deosebită în ultimii ani, deoarece este simplu, sigur, practic și ușor perfect pentru aplicațiile IoT și M2M. Mulțumită contribuției dezvoltatorilor și dezvoltatorilor de Aplicații MQTT, există MQT publice
Telecomandă pentru copii mici pentru video player pentru PC: 6 pași
Telecomandă video pentru copii mici pentru player video PC: Construiesc o telecomandă care se conectează la un computer cu USB. Telecomanda mare permite copilului meu să aleagă și să redea videoclipuri pe un computer vechi. Acesta este un proiect relativ simplu. Componenta de bază este fie o tastatură USB, fie o tastatură USB fără fir. Apoi
Instrucțiuni pentru realizarea unui atașament de legătură cu patru bare pentru suportul pentru picioare montat în centru: 9 pași (cu imagini)
Instrucțiuni pentru realizarea unui atașament de legătură cu patru bare pentru suportul pentru picioare montat în centru: scaunele cu roți cu putere medie (PWC) au devenit mai populare în ultimii ani. Cu toate acestea, datorită amplasării roților din față, suporturile tradiționale montate lateral au fost înlocuite cu un singur suport pentru picioare montat central. Din păcate, center-mou