Tartalomjegyzék:
- Kellékek
- 1. lépés: Hogyan működik
- 2. lépés: A hardver összeszerelése
- 3. lépés: A kód írása
- 4. lépés: Köszönöm
Videó: RoboPhoto - mozaikgenerátor a nyilvánosság számára: 4 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
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
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+.
- 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.
- 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.
-
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.
- Ezután a felhasználó felkéri a matricát a mozaik céllapra.
- É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
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
Kód
A RoboPhoto a VisualStudio segítségével jött létre megoldásként, két projekttel:
- A PC -n található Windows Forms alkalmazás TCP -kiszolgálót üzemeltet, és kezeli a Kinect -bemenetet
- 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:
- a projekt célképének teljes elérési útja és fájlneve
- a teljes útvonalat, ahol a projekt egyes fényképeit (darabjait) tárolják
- A mozaik oszlopainak száma
- 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, hogy elolvasta az Instructable -t. Ez volt az első. Remélem élvezted.
Ajánlott:
Privát TV-csatorna idősek számára: 4 lépés (képekkel)
Privát tévécsatorna az idősek számára: Az emlékek trükkös témát jelentenek nagyanyám számára, aki idén lesz 94 éves. Ezért hozzáadtam egy TV-csatornát a televíziójához, hogy emlékezzen családtagjaira és életének legfontosabb pillanataira. Ehhez egy ingyenes Dropbox fiókot használtam, egy Raspber
Egyszerű állvány az akusztikus Levitator MiniLev számára: 12 lépés (képekkel)
Egyszerű állvány egy akusztikus levitátor MiniLev számára: Ez a projekt nem lenne lehetséges azzal a csodálatos projekttel, amelyet Dr. Asier Marzo készített. https://www.instructables.com/Acoustic-Levitator/Minden jó projekthez hasonlóan ez is egyszerűen indult, és az idő múlásával nőtt. Dr. Marzo intracta elolvasása után
Hogyan lehet újrahasznosítani az Android telefonokat BOINC vagy összecsukható eszközök számára elemek használata nélkül: 8 lépés
Hogyan lehet újrahasznosítani az Android telefonokat BOINC vagy összecsukható berendezésekhez elemek használata nélkül: FIGYELMEZTETÉS: Semmiképpen sem vagyok felelős a hardver által okozott károkért, ezt az útmutatót követve. Ez az útmutató hatékonyabb a BOINC felhasználók számára (személyes választás / okok), FOLDING -hez is használható, mivel nincs túl sok időm, ezért
Kikapcsoló gomb a Raspberry Pi számára: 3 lépés
Kikapcsolási gomb a Raspberry Pi számára: A Raspberry Pi egy nagyon hasznos számítási platform, amely lehetővé teszi különféle IoT/robotika/intelligens otthon/… projektalkalmazások létrehozását. Az egyetlen dolog azonban nincs benne, összehasonlítva egy normál számítógéppel, a kikapcsolás gomb. Tehát hogyan tudunk létrehozni
Olcsó akril robottartály alváz az Arduino SN7300 Sinoning számára: 6 lépés
Olcsó akril robot tartály alváz Arduino SN7300 Sinoning számára: Olcsó akril tartály alváz Arduino SN7000 Sinoninghez vásárlás: SINONING ROBOT TANK