Tartalomjegyzék:

RoboPhoto - mozaikgenerátor a nyilvánosság számára: 4 lépés
RoboPhoto - mozaikgenerátor a nyilvánosság számára: 4 lépés

Videó: RoboPhoto - mozaikgenerátor a nyilvánosság számára: 4 lépés

Videó: RoboPhoto - mozaikgenerátor a nyilvánosság számára: 4 lépés
Videó: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, November
Anonim
Image
Image
RoboPhoto - mozaikgenerátor a nyilvánosság számára
RoboPhoto - mozaikgenerátor a nyilvánosság számára
RoboPhoto - mozaikgenerátor a nyilvánosság számára
RoboPhoto - mozaikgenerátor a nyilvánosság számára

A RoboPhoto egy valós idejű fotomozaikus generátor

A RoboPhoto fotomozaikat hoz létre felhasználóiból - amíg Ön várakozik.

A modern digitális technikák, például a képfeldolgozás, az arcfelismerés és a mesterséges intelligencia használatával a RoboPhoto képes létrehozni egy fotomozaikot arról, hogy minden látogató valós időben menjen el és nyomja meg a gombot.

A gomb minden egyes megnyomásakor fénykép készül az adott személyről. A RoboPhoto azonnal beolvassa és értelmezi az összes fényképet. A RoboPhoto szoftver ezután minden egyedi képet megváltoztat - úgy, hogy egy nagyobb kép részévé válik, majd ezt a megváltozott képet kinyomtatja egy matricára, amelyet koordináták sorozata jelöl, amelyek jelzik az egyes fényképek helyét a nagyobb képen belül. Ezután minden látogatót arra kell kérni, hogy helyezze el saját fotómatricáját egy nagyobb, csak megfelelő rácsot tartalmazó vászonra.

A RoboPhoto működése során új kép jön létre. Ezekből az egyedi fényképekből álló fotomozaik, amelyek utánozzák az előre meghatározott „célképet”.

A RoboPhoto egyfelhasználós módban is működik. Ilyen módon konfigurálva a RoboPhoto egyetlen felhasználó teljes mozaikját hozza létre.

Kellékek

  • Windows 10 rendszerű számítógép Visual Studio és IoT csomagokkal
  • Egy Raspberry Pi 3B+ Microsoft Windows 10 IoT telepítéssel
  • Színes címkenyomtató (Brother VC-500W)
  • Egy nagy piros nyomógomb, amely egy talapzatra van szerelve a felhasználói adatok megadásához
  • HDMI képernyő a felhasználói visszajelzésekhez
  • A Microsoft Xbox Kinect v2 fényképezőgépét- ellopták a fiamtól- fényképek készítésére
  • Hálózat (Wifi, LAN)
  • Célrács. Egy papírlap, amelyre rács van nyomtatva -koordinátákkal töltve. Ezt a papírrácsot vászonként használják, ahol a látogatók felragaszthatják fényképüket a kijelölt koordinátákra. És így végül együtt alkotják a végeredményt: egy gyönyörű új fotomozaikat.

Egy icrosoft Kinect 2.0 kamerát használtak, mert képes mélységi képeket készíteni. Ezzel a funkcióval virtuális zöld képernyőt hozhat létre minden egyes fényképen. Így a RoboPhoto átfestheti a hátteret minden egyes fényképen, hogy illeszkedjen a leendő mozaikon belüli céldarab színéhez.

1. lépés: Hogyan működik

Hogyan működik
Hogyan működik
Hogyan működik
Hogyan működik
Hogyan működik
Hogyan működik
Hogyan működik
Hogyan működik

A RoboPhoto egy olyan telepítés, amely egy talapzatot tartalmaz, rajta egy nagy piros gombbal, egy számítógépet címkenyomtatóval, valamint egy kis IoT -eszközt, amely kezeli a felhasználói felületet (képernyő és gomb). Az én esetemben: egy RaspBerry 3B+.

  1. A RoboPhoto nyilvánosan hozzáférhető helyen működik, és (bekapcsolása után) önműködő. Futás közben a RoboPhoto arra buzdítja az elhaladó látogatókat, hogy nyomják meg a nagy piros gombot.
  2. Amikor megnyomja ezt a nagy piros gombot, a RoboPhoto fényképet készít a látogatóról, aki éppen megnyomta a gombot a Kinect kamerával.
  3. Ezután a RoboPhoto fejlett A. I. és képfeldolgozási készségekkel módosíthatja az egyes fényképeket, hogy illeszkedjenek a leendő mozaikdarabhoz. Ennek elérése érdekében a RoboPhoto minden fotó hátterét átfesti, hogy megfeleljen az előre betöltött képen lévő céldarab színének. A szerkesztés után a RoboPhoto kinyomtatja a szerkesztett fényképet egy matricára egy olyan koordináta-készlettel együtt, amely pontosan meghatározza ennek az egy matricának a mozaikon belüli helyét.

  4. Ezután a felhasználó felkéri a matricát a mozaik céllapra.
  5. És így - miután sok ember meglátogatta - új műalkotás fog megjelenni. Mozaik készítéséhez sok egyedi darabra lesz szüksége. Megfelelő eredményeket kaptam, 600 darabot futtatva

A RoboPhoto egyfelhasználós módban is működhet.

Ebben a konfigurációban a RoboPhoto teljes mozaikot készít egyetlen felhasználó által szerkesztett fényképekből. A gomb megnyomása után a RoboPhoto körülbelül> 600 különböző fényképet készít a felhasználóról, majd szerkesztheti és elrendezi őket, hogy egyetlen új mozaikot alkosson, amelyet egy előre kiválasztott célkép után hoztak létre.

2. lépés: A hardver összeszerelése

A hardver összeszerelése
A hardver összeszerelése
A hardver összeszerelése
A hardver összeszerelése

Amint a fenti képen látható, a Win 10 PC csatlakozik a Kinect kamerához. A Kinect -et USB 3.0 -n keresztül kell csatlakoztatni. A RoboPhoto létrehozásakor - nem volt elérhető Raspberry Pi USB 3.0 -val.*

A PC a mellékelt címkenyomtatóra történő nyomtatás kezelésére is szolgál. Esetemben egy Brother VC-500W. Egy meglehetősen olcsó háztartási színes címkenyomtató. Ez azonban nagyon -nagyon lassú. Inkább használjon szakembert, ha tud.

A Nagy piros gomb egy Raspberry Pi 3B+készülékhez van csatlakoztatva. Csak 4 vezeték van csatlakoztatva a GPIO -hoz. Ez az egyetlen szükséges forrasztás ebben az utasításban. A Pi visszajelzést ad látogatóinknak egy 7 hüvelykes TFT képernyőn keresztül HDMI-n keresztül.

A rendbetételhez építettem egy fa talapzatot, amely mindezeket az alkatrészeket tartalmazza.

A talapzat mellett, a fal mellett egy papírlapot helyeznek el, amely tartalmazza a célrácsot és a koordinátákat (A1/A2). Mivel az általam használt címkenyomtató a címke szélessége = 2, 5 cm -t használja ki, ebben a rácsban minden négyzet mérete 2, 5 cm x 2, 5 cm.

*Ma a Raspberry Pi4 kínálja az USB3.0 -t. Az Alse W10 futtatható a készüléken. Tehát elméletileg lehetővé kell tenni a RoboPhoto v2.0 létrehozását számítógép használata nélkül. Talán a Covid '19 elegendő időt biztosít önmagam számára ahhoz, hogy hamarosan közzétegyek egy ilyen utasítást.

3. lépés: A kód írása

A kódex írása
A kódex írása
A kódex írása
A kódex írása

Kód

A RoboPhoto a VisualStudio segítségével jött létre megoldásként, két projekttel:

  1. A PC -n található Windows Forms alkalmazás TCP -kiszolgálót üzemeltet, és kezeli a Kinect -bemenetet
  2. A Raspberry Pi 3B+ egy TCP klienst tárol egy UWP fejlécű alkalmazásban (indítási alkalmazásként beállítva), hogy kezelje a gombnyomással kapcsolatos eseményeket, és visszajelzést adjon a felhasználónak a 7 hüvelykes TFT képernyőjén keresztül.

A fenti diagramon megpróbáltam képet adni arról, mit csinál a softom. A Visual Studio, amelyet ennek az (abszolút 100% -ban működő) RoboPhoto megoldásnak az elkészítéséhez írtam, ez az utasítás található. Figyelmeztetnem kell azonban mindenkit, aki letörli ezt a fájlt: Az általam írt kód messze nem szép, és gyakran a dev-PC-hez kötődik. Ezért biztatok mindenkit, hogy hozzon létre egy jobb, szebb és egyenletesebb megoldást.

1drv.ms/u/s!Aq7eBym1bHDKkKcigYzt8az9WEYOOg…

Hálózat

A példakódban a Pi kódja a Visual Studio -n keresztül kerül telepítésre a hálózatom IPAdress -jébe. Valószínűleg módosítania kell ezt, hogy megfeleljen a sajátjának. Ehhez kattintson a jobb gombbal az ARM ügyfélprojektre, miután megnyitotta a megoldást a Visual Studio alkalmazásban, majd válassza ki a tulajdonságokat, és kapcsolja át a Távoli gép értékét a saját Pi IPAddress -jébe. Ezenkívül engedélyeznie kell a forgalmat az ügyfélről a szerverre a 8123 -as porton a kiszolgáló (PC) Windows tűzfalán belül. Ha a megoldást a Visual Studio -ból futtatja, akkor meg kell kérnie, hogy tegye meg az U számára.

Kódolás közben sok problémám akadt, hogy a W32 és UWP megfelelően kommunikáljon. Úgy működött, hogy két külön osztályt használtam a kliensben és a kiszolgálóban: a MyEchoClient.cs (az ARM kliensben) és a ConnectionClient.cs (kliens kapcsolatok megszervezése a kiszolgálón).

Mozaik fájlok - egyéni osztály

A RoboPhoto mozaikokat hoz létre a célkép imitálásához. Ez a célkép és az összes egyedi fénykép, amelyek együtt alkotják a leendő mozaikot, valamint az egyes RoboPhoto egyéb tulajdonságai egy fájlrendszer fájljaiban tárolódnak. A kísérő kódom a c: / tmp / MosaicBuilder könyvtár fájljait és mappáit használja. Ebben a mappában a kód mozaikprojekt mappaként olvassa el az összes almappát, amelynek mappaneve [prj_] karakterrel kezdődik. Mindezekben a [prj_] mappákban megpróbál megnyitni egy [_projectdata.txt] nevű projektfájlt, amely tartalmazza az egyes projektekhez szükséges információkat.

Egy ilyen projektfájl a következőkből áll:

  1. a projekt célképének teljes elérési útja és fájlneve
  2. a teljes útvonalat, ahol a projekt egyes fényképeit (darabjait) tárolják
  3. A mozaik oszlopainak száma
  4. A mozaik sorainak száma

Példa projektek találhatók a zip fájlban: / slnBBMosaic2 / wfMosaicServerKinect / bin / x86 / Debug / prj_xxx

A C# szerverkódban minden mozaikkezelés egyéni osztályon keresztül történik: BBMosaicProject.cs

Microsoft Kinect v2.0 - Greenscreen

Bármilyen fényképezőgép csak fényképeket készíthet. De a Microsoft Kinect v2.0 -t használtam a színes és mélységképek kombinálására. Így zöld képernyő hatás érhető el. A Kinecttől kapott összes színes kép háttere egységes zöld felületre (BBBackgroundRemovalTool.cs) kerül.

A Microsoft. Kinect hivatkozás hozzáadásra került a szerverprojekthez.

EMGU

Mivel meg kell győződnünk arról, hogy egy személy szerepel azon a fényképen, amely a gomb megnyomásakor készült, az arcfelismerési képességeket hozzáadtuk a RoboPhoto -hoz.

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

Csak akkor, ha valaki a képen belül van, ezen a képen a zöld képernyőt egységes színű felület váltja fel, és a színkódok megegyeznek a mozaikban lévő célpont átlagos színével.

4. lépés: Köszönöm

Köszönöm
Köszönöm

Köszönöm, hogy elolvasta az Instructable -t. Ez volt az első. Remélem élvezted.

Ajánlott: