Taula de continguts:

RoboPhoto: un generador de mosaics per al públic: 4 passos
RoboPhoto: un generador de mosaics per al públic: 4 passos

Vídeo: RoboPhoto: un generador de mosaics per al públic: 4 passos

Vídeo: RoboPhoto: un generador de mosaics per al públic: 4 passos
Vídeo: Overlay Mosaic Crochet Written Pattern Generator 2024, De novembre
Anonim
Image
Image
RoboPhoto: un generador de mosaics per al públic
RoboPhoto: un generador de mosaics per al públic
RoboPhoto: un generador de mosaics per al públic
RoboPhoto: un generador de mosaics per al públic

RoboPhoto és un generador de fotomosaic en temps real

RoboPhoto crea un fotomosaic dels seus usuaris mentre espereu.

Mitjançant l’ús de tècniques digitals modernes com el processament d’imatges, el reconeixement de cares i la intel·ligència artificial, RoboPhoto és capaç de crear un fotomosaic de tots els visitants que passen i premen el botó en temps real.

Cada vegada que es prem el botó, es fa una foto de la persona a la mà. De manera instantània, cada foto és escanejada i interpretada per RoboPhoto. El programari RoboPhoto alterarà totes les imatges individuals, de manera que passarà a formar part d’una imatge més gran i, a continuació, imprimirà aquesta imatge modificada en un adhesiu etiquetat amb un conjunt de coordenades que indiquin la ubicació de cada foto dins d’aquesta imatge més gran. A continuació, es demana a cada visitant que posi el seu propi adhesiu fotogràfic sobre un llenç més gran que contingui només una quadrícula corresponent.

Durant el funcionament de RoboPhoto, es crearà una nova imatge. Un fotomosaic compost d’aquestes fotografies individuals que imitaran una ‘imatge objectiu’ predefinida.

RoboPhoto també funciona en mode un sol usuari. Quan es configura d'aquesta manera, RoboPhoto crea un mosaic complet d'un sol usuari.

Subministraments

  • Un PC amb Windows 10 amb paquets Visual Studio i IoT instal·lats
  • Un Raspberry Pi 3B + amb IoT de Microsoft Windows 10 instal·lat
  • Una impressora d’etiquetes en color (Brother VC-500W)
  • Un gran polsador vermell muntat en un pedestal per a l’entrada de l’usuari
  • Una pantalla HDMI per a la retroalimentació dels usuaris
  • Una càmera Microsoft Xbox Kinect v2, robada al meu fill, per fer fotografies
  • Una xarxa (Wifi, LAN)
  • Una quadrícula objectiu. Un full de paper amb una quadrícula impresa sobre ella, omplert de coordenades. Aquesta quadrícula de paper s’utilitza com a llenç on els visitants poden enganxar la seva fotografia a les coordenades designades. I així, finalment, formaran junts el resultat final: un bell i nou fotomosaic.

S'ha utilitzat una càmera icrosoft Kinect 2.0 perquè pot capturar imatges de profunditat. Aquesta característica s'utilitza per crear una pantalla verda virtual a cada fotografia individual. D'aquesta manera, RoboPhoto pot tornar a pintar el fons de cada fotografia individual perquè coincideixi amb el color d'una peça objectiu dins del futur mosaic.

Pas 1: Com funciona

Com funciona
Com funciona
Com funciona
Com funciona
Com funciona
Com funciona
Com funciona
Com funciona

RoboPhoto és una instal·lació que conté un pedestal amb un gran botó vermell, un ordinador amb una impressora d’etiquetes connectada i un petit dispositiu IoT que gestiona la interfície d’usuari (pantalla i botó). En el meu cas: un RaspBerry 3B +.

  1. RoboPhoto funciona en una ubicació accessible públicament i (després d’engegar-lo) funciona automàticament. Quan s’executa, RoboPhoto anima els visitants que passen a passar prement el seu gran botó vermell.
  2. Sempre que es prem aquest botó vermell gran, RoboPhoto farà una fotografia del visitant que acaba de prémer el botó amb la càmera Kinect.
  3. A continuació, RoboPhoto utilitzarà el seu avançat A. I. i habilitats de processament d'imatges per alterar cada foto perquè coincideixi amb una peça dins del futur mosaic. Per aconseguir-ho, RoboPhoto torna a pintar el fons de cada foto perquè coincideixi amb el color d’una peça objectiu dins d’una imatge precarregada. Després de l'edició, RoboPhoto imprimeix la foto editada en un adhesiu juntament amb un conjunt de coordenades que indiquen la ubicació d'aquest adhesiu dins del mosaic.

  4. A continuació, es demana a l'usuari que col·loqui l'adhesiu al full de destinació del mosaic.
  5. I així, després que hagin visitat moltes persones, sorgirà una nova obra d’art. Per crear un mosaic necessitareu moltes peces individuals. Vaig obtenir uns resultats dignes executant 600 peces

RoboPhoto també pot funcionar en mode d'un sol usuari.

En aquesta configuració, RoboPhoto crea un mosaic complet de fotografies editades d'un sol usuari. Després de prémer el botó, RoboPhoto farà unes 600 fotografies diferents de l'usuari i, a continuació, les editarà i les organitzarà per formar un sol mosaic nou, creat després d'una imatge objectiu preseleccionada.

Pas 2: Muntatge del maquinari

Muntatge del maquinari
Muntatge del maquinari
Muntatge del maquinari
Muntatge del maquinari

Com es mostra a la imatge superior, el PC Win 10 està connectat a la càmera Kinect. Kinect s'ha de connectar mitjançant USB 3.0. En aquell moment vaig crear RoboPhoto: no hi havia Raspberry Pi amb USB 3.0 disponible. *

El PC també s'utilitza per gestionar la impressió a la impressora d'etiquetes adjunta. En el meu cas un Brother VC-500W. Una impressora d’etiquetes de color per a la llar bastant barata. No obstant això, és molt, molt lent. Utilitzeu-ne un de professional si podeu.

El botó vermell gran s’adjunta a un Raspberry Pi 3B +. Només hi ha 4 cables connectats al GPIO. Aquesta és l'única soldadura necessària que es fa en aquest instructiu. El Pi també proporciona retroalimentació al visitant mitjançant una pantalla TFT de 7 per HDMI.

Per endreçar-lo, vaig construir un pedestal de fusta que contenia tots aquests components.

Al costat del pedestal, contra la paret, es col·loca un full de paper que conté la quadrícula objectiu i les coordenades (A1 / A2). Com que la impressora d’etiquetes que he utilitzat ha estat màxima per l’amplada de l’etiqueta = 2, 5 cm, tots els quadrats d’aquesta quadrícula mesuren 2, 5 cm x 2, 5 cm.

* Avui, Raspberry Pi4 ofereix USB3.0. Alse W10 es pot executar al dispositiu. Per tant, teòricament hauria de ser possible crear un RoboPhoto v2.0 sense l'ús d'un PC. Potser Covid '19 em proporcionarà prou temps pel meu compte per publicar aviat un instructable.

Pas 3: escriure el codi

Redacció del Codi
Redacció del Codi
Redacció del Codi
Redacció del Codi

Codi

RoboPhoto es va crear amb VisualStudio com a solució amb dos projectes:

  1. Una aplicació de Windows Forms al PC allotja un servidor TCP i gestiona l'entrada Kinect
  2. Un Raspberry Pi 3B + que allotja un client TCP dins d’una aplicació dirigida per UWP (configurada com a aplicació d’inici) per gestionar els esdeveniments de premsa de botons i proporcionar a l’usuari comentaris a través de la seva pantalla TFT de 7 polzades.

Al diagrama anterior, he intentat donar-vos una idea del que fa el meu soft. El Visual Studio que vaig escriure per crear aquesta solució RoboPhoto (que funciona absolutament al 100%) es proporciona amb aquesta instrucció. Tanmateix, he d’advertir a tothom que descarrega aquest fitxer: el codi que he escrit és lluny de ser bonic i sovint està vinculat al meu PC de desenvolupament. Per tant, animo a tothom a crear una solució millor, més agradable i més estable.

1drv.ms/u/s!Aq7eBym1bHDKkKcigYzt8az9WEYOOg…

Xarxa

A l'exemple de codi, el codi del Pi es desplega a través de Visual Studio a una adreça IP de la meva xarxa. Probablement hauríeu de canviar-ho perquè s’adapti al vostre. Per fer-ho, feu clic amb el botó dret del ratolí al projecte de client ARM després d'obrir la solució a Visual Studio i, a continuació, trieu les propietats i canvieu el valor de la màquina remota a l'adreça IP del vostre propi Pi. També heu de permetre el trànsit que va del client al servidor al port 8123 del tallafoc de Windows al servidor (PC). Si executeu la solució des de Visual Studio, us hauria de demanar que ho feu per U.

Mentre codificava, he tingut molts problemes perquè el W32 i UWP es comuniquin correctament. Vaig funcionar fent servir dues classes separades al client i al servidor: resp MyEchoClient.cs (al client ARM) i ConnectionClient.cs (modificació de les connexions del client al servidor).

Fitxers de mosaic: classe personalitzada

RoboPhoto crea mosaics per imitar una imatge objectiu. Aquesta imatge objectiu i totes les fotografies individuals que junts formen el futur mosaic, així com algunes altres propietats de cada RoboPhoto, s’emmagatzemen en fitxers d’un sistema de fitxers. El meu codi acompanyat utilitza un conjunt de fitxers i carpetes al directori c: / tmp / MosaicBuilder. Dins d’aquesta carpeta, el codi llegirà totes les subcarpetes amb un nom de carpeta que comença per [prj_] com a carpetes de projectes en mosaic. Dins d'aquestes carpetes [prj_] s'intentarà obrir un fitxer de projecte anomenat [_projectdata.txt] que conté tota la informació necessària per a cada projecte.

Aquest fitxer de projecte consisteix en:

  1. el camí complet i el nom de fitxer de la imatge objectiu d'aquest projecte
  2. el camí complet on s’emmagatzemen fotografies individuals (peces) d’aquest projecte
  3. Nombre de columnes que contindrà el mosaic
  4. Nombre de files que contindrà el mosaic

Es proporcionen exemples de projectes al fitxer zip: / slnBBMosaic2 / wfMosaicServerKinect / bin / x86 / Debug / prj_xxx

Al codi del servidor C #, tota la manipulació del mosaic es fa mitjançant una classe personalitzada: BBMosaicProject.cs

Microsoft Kinect v2.0: pantalla verda

Només fer fotografies que farà qualsevol càmera. Però he utilitzat Microsoft Kinect v2.0 per combinar imatges en color i imatges de profunditat. D'aquesta manera, es pot crear un efecte de pantalla verda. El fons de totes les imatges en color rebudes de Kinect se substituirà per una superfície verda uniforme (BBBackgroundRemovalTool.cs).

S'ha afegit una referència a Microsoft. Kinect al projecte del servidor.

EMGU

Com que hem d'estar segurs que hi hagi una persona a la fotografia que es va fer quan es va prémer el botó, a RoboPhoto es van afegir funcions de reconeixement facial.

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

Només quan hi hagi una persona a la imatge, la pantalla verda d'aquesta imatge se substituirà per una superfície de color uniforme, amb codis de colors iguals al color mitjà de la peça objectiu del futur mosaic.

Pas 4: gràcies

Gràcies
Gràcies

Gràcies per llegir el meu Instructable. Aquesta va ser la meva primera. Espero que us hagi agradat.

Recomanat: