Table des matières:
- Fournitures
- Étape 1: Comment cela fonctionne
- Étape 2: Assemblage du matériel
- Étape 3: Rédaction du code
- Étape 4: Merci
Vidéo: RoboPhoto - un générateur de mosaïque pour le public : 4 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
RoboPhoto est un générateur de photomosaïque en temps réel
RoboPhoto crée une photomosaïque de ses utilisateurs - pendant que vous attendez.
En utilisant des techniques numériques modernes telles que le traitement d'images, la reconnaissance faciale et l'intelligence artificielle, RoboPhoto est capable de créer une photomosaïque de tous les visiteurs passant et appuyant sur son bouton - en temps réel.
Chaque fois que le bouton est enfoncé, une photo est prise de la personne à portée de main. Instantanément chaque photo est numérisée et interprétée par RoboPhoto. Le logiciel RoboPhoto modifiera ensuite toutes les images individuelles - afin qu'elles fassent partie d'une image plus grande, puis imprimera cette image modifiée sur un autocollant étiqueté avec un ensemble de coordonnées indiquant l'emplacement de chaque photo dans cette image plus grande. Chaque visiteur est ensuite invité à placer son propre autocollant photo sur une toile plus grande contenant uniquement une grille correspondante.
Pendant le fonctionnement de RoboPhoto, une nouvelle image sera créée. Une photomosaïque composée de ces photographies individuelles qui imiteront une « image cible » prédéfinie.
RoboPhoto fonctionne également en mode mono-utilisateur. Lorsqu'il est configuré de cette façon, RoboPhoto crée une mosaïque complète d'un seul utilisateur.
Fournitures
- Un PC Windows 10 avec les packages Visual Studio et IoT installés
- Un Raspberry Pi 3B+ avec Microsoft Windows 10 IoT installé
- Une imprimante d'étiquettes couleur (Brother VC-500W)
- Un gros bouton-poussoir rouge monté sur un socle pour l'entrée de l'utilisateur
- Un écran HDMI pour les retours utilisateurs
- Un appareil photo Microsoft Xbox Kinect v2 - volé à mon fils - pour prendre des photos
- Un réseau (Wifi, LAN)
- Une grille cible. Une feuille de papier avec une grille imprimée dessus - remplie de coordonnées. Cette grille de papier sert de toile où les visiteurs peuvent coller leur photographie sur les coordonnées désignées. Et finalement, ils formeront ensemble le résultat final: une magnifique nouvelle photomosaïque.
Une caméra icrosoft Kinect 2.0 a été utilisée car elle peut prendre des images en profondeur. Cette fonctionnalité est utilisée pour créer un écran vert virtuel sur chaque photo. De cette façon, RoboPhoto peut repeindre l'arrière-plan de chaque photographie individuelle pour qu'il corresponde à la couleur d'une pièce cible dans la future mosaïque.
Étape 1: Comment cela fonctionne
RoboPhoto est une installation contenant un piédestal avec un gros bouton rouge dessus, un ordinateur avec une imprimante d'étiquettes connectée et un petit appareil IoT gérant l'interface utilisateur (écran et bouton). Dans mon cas: un RaspBerry 3B+.
- RoboPhoto fonctionne dans un endroit accessible au public et est (après l'avoir allumé) autonome. Lors de la course, les visiteurs de passage sont encouragés par RoboPhoto à appuyer sur son gros bouton rouge.
- Chaque fois que vous appuyez sur ce gros bouton rouge, RoboPhoto prend une photo du visiteur qui vient d'appuyer sur le bouton avec la caméra Kinect.
-
Ensuite, RoboPhoto utilisera son A. I. avancé. et des compétences en traitement d'image pour modifier chaque photo pour qu'elle corresponde à une pièce de la future mosaïque. Pour ce faire, RoboPhoto repeint l'arrière-plan de chaque photo pour qu'il corresponde à la couleur d'une pièce cible dans une image préchargée. Après l'édition, RoboPhoto imprime la photo éditée sur un autocollant avec un ensemble de coordonnées qui identifient l'emplacement de cet autocollant dans la mosaïque.
- Ensuite, l'utilisateur est invité à placer l'autocollant sur la feuille cible en mosaïque.
- Et ainsi, après la visite de nombreuses personnes, une nouvelle œuvre d'art émergera. Pour créer une mosaïque, vous aurez besoin de beaucoup de pièces individuelles. J'ai obtenu des résultats décents avec 600 pièces
RoboPhoto peut également fonctionner en mode mono-utilisateur.
Dans cette configuration, RoboPhoto crée une mosaïque complète de photographies éditées par un seul utilisateur. Après avoir appuyé sur le bouton, RoboPhoto prendra environ 600 photos différentes de l'utilisateur, puis les éditera et les arrangera toutes pour former une seule nouvelle mosaïque, créée après une image cible présélectionnée.
Étape 2: Assemblage du matériel
Comme le montre l'image ci-dessus, le PC Win 10 est connecté à la caméra Kinect. Kinect doit être connecté par USB 3.0. Au moment où j'ai créé RoboPhoto - aucun Raspberry Pi avec USB 3.0 n'était disponible.*
Le PC est également utilisé pour gérer l'impression sur l'imprimante d'étiquettes connectée. Dans mon cas, un Brother VC-500W. Une imprimante d'étiquettes couleur domestique assez bon marché. C'est quand même très très lent. Mieux vaut utiliser un professionnel si vous le pouvez.
Le Big Red Button est attaché à un Raspberry Pi 3B+. Seuls 4 fils sont connectés au GPIO. C'est la seule soudure nécessaire faite dans ce Instructable. Le Pi fournit également un retour d'information à notre visiteur au moyen d'un écran TFT 7'' sur HDMI.
Pour le ranger, j'ai construit un socle en bois qui contient tous ces éléments.
A côté du piédestal, contre le mur, une feuille de papier contenant la grille-cible et les coordonnées est placée (A1/A2). Parce que l'imprimante d'étiquettes que j'ai utilisée atteint sa largeur d'étiquette = 2,5 cm, tous les carrés de cette grille mesurent 2,5 cm x 2,5 cm.
*Aujourd'hui, Raspberry Pi4 propose l'USB3.0. Alse W10 peut être exécuté sur l'appareil. Il devrait donc théoriquement être possible de créer un RoboPhoto v2.0 sans utiliser de PC. Peut-être que Covid '19 me donnera suffisamment de temps pour publier bientôt un tel Instructable.
Étape 3: Rédaction du code
Code
RoboPhoto a été créé avec VisualStudio comme solution avec deux projets:
- Une application Windows Forms sur le PC héberge un serveur TCP et gère l'entrée Kinect
- Un Raspberry Pi 3B+ hébergeant un client TCP au sein d'une application dirigée par UWP (définie comme application de démarrage) pour gérer les événements d'appui sur les boutons et fournir à l'utilisateur un retour d'informations via son écran TFT 7''.
Dans le schéma ci-dessus, j'ai essayé de vous donner une idée de ce que fait mon soft. Le Visual Studio que j'ai écrit pour créer cette solution RoboPhoto (absolument 100% fonctionnel) est fourni avec ce Instructable. Cependant, je dois avertir tous ceux qui téléchargent ce fichier: le code que j'ai écrit est loin d'être joli et souvent lié à mon dev-PC. J'encourage donc tout le monde à créer une solution meilleure, plus agréable et plus stable.
1drv.ms/u/s!Aq7eBym1bHDKkKcigYzt8az9WEYOOg…
Réseau
Dans l'exemple de code, le code du Pi est déployé via Visual Studio sur une adresse IP de mon réseau. Vous devriez probablement changer cela pour l'adapter au vôtre. Pour ce faire, cliquez avec le bouton droit sur le projet client ARM après avoir ouvert la solution dans Visual Studio, puis choisissez les propriétés et modifiez la valeur Machine distante sur l'adresse IP de votre propre Pi. Vous devez également autoriser le trafic allant du client au serveur sur le port 8123 dans le pare-feu Windows sur le serveur (PC). Si vous exécutez la solution à partir de Visual Studio, il devrait vous demander de le faire pour U.
Lors du codage, j'ai eu beaucoup de mal à faire communiquer correctement le W32 et l'UWP. Je l'ai fait fonctionner en utilisant deux classes distinctes dans le client et le serveur: resp MyEchoClient.cs (dans le client ARM) et ConnectionClient.cs (en gérant les connexions client sur le serveur).
Fichiers mosaïque - classe personnalisée
RoboPhoto crée des mosaïques pour imiter une image cible. Cette image cible et toutes les photographies individuelles qui constituent ensemble la future mosaïque, ainsi que certaines autres propriétés de chaque RoboPhoto sont stockées dans des fichiers dans un système de fichiers. Mon code accompagné utilise un ensemble de fichiers et de dossiers dans le répertoire c:\tmp\MosaicBuilder. Dans ce dossier, le code lira tous les sous-dossiers dont le nom de dossier commence par [prj_] en tant que dossiers de projet de mosaïque. Dans tous ces dossiers [prj_], il essaiera d'ouvrir un fichier de projet nommé [_projectdata.txt] qui contient toutes les informations requises pour chaque projet.
Un tel fichier de projet se compose de:
- le chemin complet et le nom de fichier de l'image cible de ce projet
- le chemin complet où les photographies individuelles (pièces) de ce projet sont stockées
- Nombre de colonnes que contiendra la mosaïque
- Nombre de lignes que contiendra la mosaïque
Des exemples de projets sont fournis dans le fichier zip: \slnBBMosaic2\wfMosaicServerKinect\bin\x86\Debug\prj_xxx
Dans le code du serveur C#, toute la gestion des mosaïques se fait via une classe personnalisée: BBMosaicProject.cs
Microsoft Kinect v2.0 - Écran vert
Pour simplement prendre des photos, n'importe quel appareil photo fera l'affaire. Mais j'ai utilisé Microsoft Kinect v2.0 pour combiner des images couleur et des images de profondeur. De cette façon, un effet d'écran vert peut être créé. L'arrière-plan de toutes les images couleur reçues de Kinect sera remplacé par une surface verte uniforme (BBBackgroundRemovalTool.cs).
Une référence à Microsoft. Kinect a été ajoutée au serverproject.
EMGU
Parce que nous devons être sûrs qu'une personne est sur la photo qui a été prise lorsque le bouton a été enfoncé, des capacités de reconnaissance faciale ont été ajoutées à RoboPhoto.
www.nuget.org/packages/Emgu. CV/3.4.3.3016
Ce n'est que lorsqu'une personne se trouve dans l'image que l'écran vert de cette image sera remplacé par une surface de couleur uniforme, avec des codes de couleur égaux à la couleur moyenne de la pièce cible dans la mosaïque que cette image deviendra.
Étape 4: Merci
Merci d'avoir lu mon Instructable. C'était mon premier. J'espère que vous avez aimé.
Conseillé:
Comment réaliser rapidement le design en mosaïque dans AD/Protel : 3 étapes
Comment réaliser rapidement la conception de mosaïque dans AD / Protel : Dans la conception de PCB, nous utilisons souvent l'assemblage, comment réaliser un assemblage rapide ? Les méthodes suivantes sont introduites; Cliquez ici pour créer votre propre carte PCB : http://www.starivergroup.com/La manière d'assembler dans Altium / ProtelLe soi-disant assemblage est en fait
Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266): 4 étapes (avec images)
Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266): Bonjour, aujourd'hui, je vais vous expliquer comment créer votre propre petit générateur de musique basé sur la météo. Il est basé sur un ESP8266, qui ressemble un peu à un Arduino, et il réagit à la température, à la pluie et l'intensité lumineuse. Ne vous attendez pas à ce qu'il fasse des chansons entières ou un programme d'accords
Générateur - Générateur CC utilisant un interrupteur à lames : 3 étapes
Générateur - Générateur CC utilisant un commutateur Reed : Générateur CC simple Un générateur à courant continu (CC) est une machine électrique qui convertit l'énergie mécanique en électricité à courant continu.Important : Un générateur à courant continu (CC) peut être utilisé comme moteur à courant continu sans aucune construction changements
Faire une image en mosaïque dans Photoshop : 5 étapes
Créer une image en mosaïque dans Photoshop : découvrez comment créer une image pouvant se répéter dans toutes les directions dans Photoshop 7.0 ou version ultérieure. Les images en mosaïque sont idéales pour les ordinateurs de bureau
Créer des motifs en mosaïque pour l'image d'arrière-plan du site Web : 8 étapes
Créer des modèles de mosaïque pour l'image d'arrière-plan du site Web : Voici une méthode simple et directe (je pense) pour créer des images qui peuvent être carrelées sans avoir l'air trop "grille". Ce didacticiel utilise Inkscape (www.inkscape.org), un éditeur de graphiques vectoriels open source. J'imagine que cette méthode peut