Съдържание:
- Консумативи
- Стъпка 1: Как работи
- Стъпка 2: Сглобяване на хардуера
- Стъпка 3: Написване на кода
- Стъпка 4: Благодаря ви
Видео: RoboPhoto - генератор на мозайка за обществеността: 4 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
RoboPhoto е генератор на фотомозайки в реално време
RoboPhoto създава фотомозайка на своите потребители - докато чакате.
Използвайки съвременни цифрови техники като обработка на изображения, разпознаване на лица и изкуствен интелект, RoboPhoto е в състояние да създаде фотомозаика на всички посетители, които минават покрай тях и натискат бутона-в реално време.
При всяко натискане на бутона се прави снимка на човека под ръка. Всяка снимка мигновено се сканира и интерпретира от RoboPhoto. След това софтуерът RoboPhoto ще промени цялото отделно изображение - така че да стане част от по -голямо изображение, и след това да отпечата тази променена картина върху стикер, обозначен с набор от координати, които показват местоположението на всяка снимка в това по -голямо изображение. След това всеки посетител е помолен да постави свой собствен фотостикер върху по-голямо платно, съдържащо само съответна решетка.
По време на работата на RoboPhoto ще бъде създадено ново изображение. Фотомозайка, съставена от тези отделни снимки, които ще имитират предварително дефинирано „изображение на целта“.
RoboPhoto работи и в режим за един потребител. Когато е конфигуриран по този начин, RoboPhoto създава пълна мозайка от един потребител.
Консумативи
- Компютър с Windows 10 с инсталирани пакети Visual Studio и IoT
- Raspberry Pi 3B+ с инсталиран Microsoft Windows 10 IoT
- Принтер за цветни етикети (Brother VC-500W)
- Голям червен бутон, монтиран на пиедестал за въвеждане от потребителя
- HDMI екран за обратна връзка от потребителя
- Камера на Microsoft Xbox Kinect v2- открадната от сина ми- за правене на снимки
- Мрежа (Wifi, LAN)
- Целева мрежа. Лист хартия с отпечатана решетка, изпълнен с координати. Тази хартиена решетка се използва като платно, където посетителите могат да залепят снимката си върху определените координати. И така в крайна сметка те ще образуват заедно крайния резултат: красива нова фотомозайка.
Използвана е камера на Microsoft Kinect 2.0, защото може да прави дълбоки изображения. Тази функция се използва за създаване на виртуален зелен екран на всяка отделна снимка. По този начин RoboPhoto може да пребоядисва фона на всяка отделна снимка, за да съответства на цвета на целевата част в бъдещата мозайка.
Стъпка 1: Как работи
RoboPhoto е инсталация, съдържаща пиедестал с голям червен бутон върху него, компютър с прикрепен принтер за етикети и малко IoT устройство, работещо с потребителския интерфейс (екран и бутон). В моя случай: RaspBerry 3B+.
- RoboPhoto работи в рамките на обществено достъпно място и (след включването му) работи самостоятелно. По време на бягане, преминаващите посетители се насърчават от RoboPhoto да натиснат големия си червен бутон.
- Всеки път, когато този голям червен бутон е натиснат, RoboPhoto ще направи снимка на посетителя, който току -що е натиснал бутона с камерата Kinect.
-
Тогава RoboPhoto ще използва своя усъвършенстван A. I. и умения за обработка на изображения за промяна на всяка снимка, за да съответства на парче в бъдещата мозайка. За да постигне това, RoboPhoto пребоядисва фона на всяка снимка, за да съответства на цвета на целевата част в предварително заредено изображение. След редактирането RoboPhoto разпечатва редактираната снимка върху стикер заедно с набор от координати, които определят точно местоположението на този един стикер в мозайката.
- След това потребителят е помолен да постави стикера върху листа с мозайка.
- И така - след като много хора са го посетили - ще се появи ново произведение на изкуството. За да създадете мозайка, ще ви трябват много отделни парчета. Получих прилични резултати, изпълнявайки 600 парчета
RoboPhoto може да работи и в режим за един потребител.
В тази конфигурация RoboPhoto създава пълна мозайка от много редактирани снимки от един потребител. След натискане на бутона, RoboPhoto ще заснеме около> 600 различни снимки на потребителя, след което ще ги редактира и подреди всички, за да образува една-единствена нова мозайка, създадена след предварително избрано целево изображение.
Стъпка 2: Сглобяване на хардуера
Както е показано на снимката по -горе, компютърът Win 10 е свързан с камерата Kinect. Kinect трябва да бъде свързан чрез USB 3.0. По времето, когато създадох RoboPhoto - нямаше налична Raspberry Pi с USB 3.0.*
Компютърът се използва и за обработка на печат към приложения принтер за етикети. В моя случай Brother VC-500W. Доста евтин принтер за домашни цветни етикети. Това обаче е много много бавно. По -добре използвайте професионален, ако можете.
Големият червен бутон е прикрепен към Raspberry Pi 3B+. Само 4 проводника са свързани към GPIO. Това е единственото необходимо запояване, направено в тази инструкция. Pi също осигурява обратна връзка на нашия посетител посредством 7-инчов TFT екран през HDMI.
За да го подредя, построих дървен пиедестал, който държи всички тези компоненти.
До пиедестала, до стената, е поставен лист хартия, съдържащ целевата мрежа и координати (A1/A2). Тъй като принтерът за етикети, който използвах, е с максимална ширина на етикета = 2,5 см, всички квадратчета в тази мрежа са с размери 2, 5 см х 2, 5 см.
*Днес Raspberry Pi4 предлага USB3.0. Alse W10 може да се стартира на устройството. Така че теоретично би трябвало да е възможно да се създаде RoboPhoto v2.0 без използването на компютър. Може би Covid '19 ще ми осигури достатъчно време сам да публикувам такъв Instructable скоро.
Стъпка 3: Написване на кода
Код
RoboPhoto е създаден с VisualStudio като решение с два проекта:
- Приложение за Windows Forms на компютъра хоства TCP сървър и обработва входа на Kinect
- Raspberry Pi 3B+, хостващ TCP клиент в приложение, ръководено от UWP (зададено като стартиращо приложение), за да обработва събития при натискане на бутон и да предоставя на потребителя обратна връзка чрез своя 7-инчов TFT екран.
В горната диаграма се опитах да ви дам представа какво прави моят софтуер. Visual Studio, който написах, за да създам това (абсолютно 100% работещо) решение RoboPhoto е предоставено с този Instructable. Трябва обаче да предупредя всички, които изтеглят този файл: Кодът, който написах, далеч не е красив и често е свързан с моя dev-PC. Затова насърчавам всички да създадат по -добро, по -хубаво и стабилно решение.
1drv.ms/u/s!Aq7eBym1bHDKkKcigYzt8az9WEYOOg…
Мрежа
В примерния код кодът на Pi се разгръща чрез Visual Studio към IP адрес в моята мрежа. Вероятно трябва да промените това, за да отговаря на вашите собствени. За да направите това - щракнете с десния бутон върху клиентския проект ARM, след като отворите решението във Visual Studio, след това изберете свойства и поставете стойността на отдалечена машина в IP адреса на вашия собствен Pi. Също така трябва да разрешите трафик, преминаващ от клиент към сървър на порт 8123 в защитната стена на Windows на сървъра (компютър). Ако стартирате решението от Visual Studio, то трябва да ви помоли да го направите за U.
Докато кодирах, имах много проблеми да накарам W32 и UWP да комуникират правилно. Направих го, като използвах два отделни класа в клиент и сървър: resp MyEchoClient.cs (в клиента ARM) и ConnectionClient.cs (прекъсване на клиентски връзки в сървъра).
Мозаечни файлове - персонализиран клас
RoboPhoto създава мозайки, за да имитира целево изображение. Това целево изображение и всички отделни снимки, които заедно съставляват бъдещата мозайка, както и някои други свойства на всяка RoboPhoto се съхраняват във файлове във файлова система. Моят придружен код използва набор от файлове и папки в директория c: / tmp / MosaicBuilder. В тази папка кодът ще прочете всички подпапки с име на папка, което започва с [prj_] като мозаечни папки на проекта. Във всички тези [prj_] папки той ще се опита да отвори файл с име [_projectdata.txt], който съдържа цялата информация, необходима за всеки проект.
Такъв проект се състои от:
- пълния път и име на файла на целевото изображение на този проект
- пълният път, където се съхраняват отделни снимки (парчета) от този проект
- Брой колони, които ще съдържа мозайката
- Брой редове, които ще съдържа мозайката
Примерни проекти са предоставени в zip файла: / slnBBMosaic2 / wfMosaicServerKinect / bin / x86 / Debug / prj_xxx
В кода на сървъра на C# цялата обработка на мозайки се извършва чрез персонализиран клас: BBMosaicProject.cs
Microsoft Kinect v2.0 - Greenscreen
Всеки фотоапарат може да прави само снимки. Но използвах Microsoft Kinect v2.0 за комбиниране на цветни изображения и изображения на дълбочина. По този начин може да се създаде ефект на зелен екран. Фонът във всички цветни изображения, получени от Kinect, ще бъде заменен с еднаква зелена повърхност (BBBackgroundRemovalTool.cs).
Към сървърния проект е добавена препратка към Microsoft. Kinect.
EMGU
Тъй като трябва да сме сигурни, че човек е на снимката, направена при натискане на бутона, възможностите за разпознаване на лица бяха добавени към RoboPhoto.
www.nuget.org/packages/Emgu. CV/3.4.3.3016
Само когато човек е в картината, зеленият екран на тази снимка ще бъде заменен от еднаква цветна повърхност, с цветови кодове, равни на средния цвят на целевата част в бъдещата мозайка, която ще стане.
Стъпка 4: Благодаря ви
Благодаря ви, че прочетохте моята инструкция. Това беше първото ми. Надявам се да ви е харесало.
Препоръчано:
Първи стъпки с безжични сензори за температура и вибрации на дълги разстояния: 7 стъпки
Първи стъпки с безжични сензори за температура и вибрации на дълги разстояния: Понякога вибрациите са причина за сериозни проблеми в много приложения. От валове и лагери на машината до работа на твърдия диск, вибрациите причиняват повреда на машината, ранна подмяна, ниска производителност и нанасят сериозен удар върху точността. Мониторинг
Първи стъпки с STM32f767zi Cube IDE и качване на персонализирана скица: 3 стъпки
Първи стъпки с STM32f767zi Cube IDE и качване на персонализирана скица: КУПЕТЕ (щракнете върху теста, за да закупите/посетете уеб страницата) STM32F767ZISUPPORTED SOFTWARE · STM32CUBE IDE · KEIL MDK ARM µVISION · EWARM IAR EMBEDDED WORKBENCH използва се за програмиране на STM микроконтролери
Как да направите 4G LTE двойна BiQuade антена Лесни стъпки: 3 стъпки
Как да направя 4G LTE двойна BiQuade антена лесни стъпки: През повечето време, с което се сблъсквах, нямам добра сила на сигнала за ежедневните ми работи. Така. Търся и опитвам различни видове антени, но не работи. След загубено време намерих антена, която се надявам да направя и изпробвам, защото тя не градивен принцип
Дизайн на играта с бързо движение в 5 стъпки: 5 стъпки
Дизайн на игра с Flick в 5 стъпки: Flick е наистина прост начин да направите игра, особено нещо като пъзел, визуален роман или приключенска игра
Система за предупреждение за паркиране на автомобил Arduino - Стъпки по стъпка: 4 стъпки
Система за предупреждение за паркиране на автомобил Arduino | Стъпки по стъпка: В този проект ще проектирам обикновена верига за сензори за паркиране на автомобил Arduino, използвайки Arduino UNO и HC-SR04 ултразвуков сензор. Тази базирана на Arduino система за предупреждение за автомобил за заден ход може да се използва за автономна навигация, измерване на роботи и други обхвати