فهرست مطالب:

RoboPhoto - ژنراتور موزاییک برای عموم: 4 مرحله
RoboPhoto - ژنراتور موزاییک برای عموم: 4 مرحله

تصویری: RoboPhoto - ژنراتور موزاییک برای عموم: 4 مرحله

تصویری: RoboPhoto - ژنراتور موزاییک برای عموم: 4 مرحله
تصویری: Why the Monument to Communism in the Sky was ABANDONED 2024, نوامبر
Anonim
Image
Image
RoboPhoto - ژنراتور موزاییک برای عموم
RoboPhoto - ژنراتور موزاییک برای عموم
RoboPhoto - ژنراتور موزاییک برای عموم
RoboPhoto - ژنراتور موزاییک برای عموم

RoboPhoto یک ژنراتور فوتوموزاییک زمان واقعی است

RoboPhoto یک photomosaic از کاربران خود ایجاد می کند - در حالی که شما منتظر می مانید.

با استفاده از تکنیک های دیجیتالی مدرن مانند پردازش تصویر ، تشخیص چهره و هوش مصنوعی ، RoboPhoto قادر است از همه بازدیدکنندگان که از کنار آنها عبور کرده و دکمه آن را فشار می دهند-در زمان واقعی-یک عکس عکس ایجاد کند.

با هر بار فشردن دکمه ، عکسی از شخص در دست گرفته می شود. فوراً هر عکس توسط RoboPhoto اسکن و تفسیر می شود. سپس نرم افزار RoboPhoto تمام تصویرهای شخصی را تغییر می دهد - به این ترتیب بخشی از یک تصویر بزرگتر می شود و سپس این تصویر تغییر یافته را روی برچسبی که دارای مجموعه ای از مختصات است نشان می دهد که محل هر عکس را در آن تصویر بزرگتر نشان می دهد. سپس از هر بازدید کننده خواسته می شود تا برچسب عکس خود را بر روی یک بوم بزرگتر که فقط یک شبکه مربوطه دارد ، قرار دهد.

در حین کار RoboPhoto ، یک تصویر جدید ایجاد می شود. یک فتوموزاییک متشکل از این عکس های فردی که از یک "تصویر هدف" از پیش تعریف شده تقلید می کند.

RoboPhoto همچنین در حالت تک کاربر کار می کند. هنگامی که به این ترتیب پیکربندی می شود ، RoboPhoto یک موزاییک کامل از یک کاربر واحد ایجاد می کند.

تدارکات

  • یک رایانه Windows 10 با Visual Studio و بسته های اینترنت اشیا نصب شده است
  • Raspberry Pi 3B+ با Microsoft Windows 10 IoT نصب شده است
  • چاپگر برچسب رنگی (Brother VC-500W)
  • یک دکمه قرمز بزرگ برای نصب کاربر بر روی پایه نصب شده است
  • صفحه نمایش HDMI برای بازخورد کاربر
  • یک دوربین مایکروسافت ایکس باکس کینکت v2- که از پسرم دزدیده شد- برای گرفتن عکس
  • شبکه (Wifi ، LAN)
  • یک شبکه هدف یک ورق کاغذ با یک شبکه چاپ شده روی آن -با مختصات پر شده است. این شبکه کاغذی به عنوان بوم استفاده می شود که بازدیدکنندگان می توانند عکس خود را روی مختصات تعیین شده بچسبانند. و بنابراین در نهایت آنها نتیجه نهایی را با هم تشکیل می دهند: یک فوتوموزاییک جدید زیبا.

از دوربین icosoft Kinect 2.0 استفاده شد زیرا می تواند تصاویر عمیق بگیرد. این ویژگی برای ایجاد یک صفحه سبز مجازی بر روی هر عکاس استفاده می شود. به این ترتیب RoboPhoto می تواند زمینه هر عکس را مجدداً رنگ آمیزی کند تا با رنگ قطعه مورد نظر در موزاییک آینده مطابقت داشته باشد.

مرحله 1: نحوه عملکرد

چگونه کار می کند
چگونه کار می کند
چگونه کار می کند
چگونه کار می کند
چگونه کار می کند
چگونه کار می کند
چگونه کار می کند
چگونه کار می کند

RoboPhoto یک نصب شامل پایه ای با دکمه قرمز بزرگ روی آن ، رایانه ای با چاپگر برچسب متصل شده و دستگاه IoT کوچک است که رابط کاربری را کنترل می کند (صفحه و دکمه). در مورد من: RaspBerry 3B+.

  1. RoboPhoto در یک مکان قابل دسترسی عمومی کار می کند و (پس از روشن کردن آن) خود کار می کند. هنگام دویدن ، بازدیدکنندگان گذری توسط RoboPhoto تشویق می شوند که دکمه قرمز بزرگ آن را فشار دهند.
  2. هر زمان که آن دکمه قرمز بزرگ فشار داده شود ، RoboPhoto عکسی از بازدیدکننده ای که فقط با دوربین Kinect دکمه را فشار داده است ، می گیرد.
  3. سپس RoboPhoto از هوش مصنوعی پیشرفته خود استفاده خواهد کرد. و مهارت های پردازش تصویر برای تغییر هر عکس برای مطابقت با قطعه ای در موزاییک آینده. برای دستیابی به این هدف ، RoboPhoto پس زمینه هر عکس را دوباره رنگ آمیزی می کند تا با رنگ قطعه مورد نظر در یک تصویر از پیش بارگذاری شده مطابقت داشته باشد. پس از ویرایش ، RoboPhoto عکس ویرایش شده را روی یک برچسب به همراه مجموعه ای از مختصات چاپ می کند که محل این برچسب را در موزاییک مشخص می کند.

  4. سپس از کاربر خواسته می شود که برچسب را روی ورق هدف موزاییک قرار دهد.
  5. و بنابراین - پس از بازدید بسیاری از مردم - یک اثر هنری جدید ظاهر می شود. برای ایجاد موزاییک به تعداد زیادی قطعه مجزا احتیاج دارید. با اجرای 600 قطعه به نتایج خوبی رسیدم

RoboPhoto همچنین می تواند در حالت تک کاربر کار کند.

در این پیکربندی RoboPhoto موزاییک کاملی از عکسهای ویرایش شده از یک کاربر را ایجاد می کند. پس از ضربه زدن به دکمه ، RoboPhoto حدود 600 عکس مختلف از کاربر می گیرد و سپس همه آنها را ویرایش و ترتیب می دهد تا یک موزاییک جدید ایجاد کند ، که پس از یک تصویر هدف از پیش انتخاب شده ایجاد شده است.

مرحله 2: مونتاژ سخت افزار

مونتاژ سخت افزار
مونتاژ سخت افزار
مونتاژ سخت افزار
مونتاژ سخت افزار

همانطور که در تصویر بالا نشان داده شده است ، رایانه Win 10 به دوربین Kinect متصل است. Kinect باید توسط USB 3.0 متصل شود. در زمان ایجاد RoboPhoto - هیچ Raspberry Pi با USB 3.0 در دسترس نبود.*

همچنین از رایانه شخصی برای چاپ روی چاپگر برچسب متصل استفاده می شود. در مورد من Brother VC-500W. چاپگر برچسب رنگ خانگی نسبتاً ارزان. با این حال ، بسیار بسیار کند است. در صورت امکان بهتر است از یک حرفه ای استفاده کنید.

دکمه قرمز بزرگ به رزبری پای 3B+متصل شده است. فقط 4 سیم به GPIO وصل شده است. این تنها لحیم کاری است که در این دستورالعمل انجام شده است. Pi همچنین با استفاده از صفحه نمایش TFT 7 اینچی از طریق HDMI بازخورد بازدیدکنندگان را ارائه می دهد.

برای مرتب کردن آن ، یک پایه چوبی ساختم که همه این اجزا را در خود نگه می دارد.

در کنار پایه ، در مقابل دیوار ، یک ورق کاغذ حاوی شبکه هدف و مختصات (A1/A2) قرار داده شده است. از آنجا که چاپگر برچسب مورد استفاده من با عرض برچسب = 2 ، 5 سانتی متر افزایش می یابد ، تمام مربع های این شبکه 2 ، 5 سانتی متر در 2 ، 5 سانتی متر است.

*امروزه Raspberry Pi4 USB3.0 را ارائه می دهد. Alse W10 را می توان روی دستگاه اجرا کرد. بنابراین از نظر تئوری باید بتوان RoboPhoto v2.0 را بدون استفاده از رایانه شخصی ایجاد کرد. شاید کووید 19 به تنهایی زمان کافی را در اختیار من بگذارد تا به زودی چنین دستورالعملی را منتشر کنم.

مرحله 3: نوشتن کد

نوشتن کد
نوشتن کد
نوشتن کد
نوشتن کد

کد

RoboPhoto با VisualStudio به عنوان راه حلی با دو پروژه ایجاد شد:

  1. یک برنامه Windows Forms در رایانه میزبان یک سرور TCP و مدیریت ورودی Kinect است
  2. Raspberry Pi 3B+ میزبان یک مشتری TCP در یک برنامه UWP (تنظیم شده به عنوان برنامه راه اندازی) برای رسیدگی به رویدادهای مطبوعاتی و ارائه بازخورد به کاربر از طریق صفحه TFT 7 اینچی آن است.

در نمودار بالا ، من سعی کردم به شما ایده ای بدهم که نرم من چه می کند. ویژوال استودیویی که من برای ایجاد این راه حل RoboPhoto (کاملاً 100٪ کار می کنم) با این دستورالعمل ارائه شده است. با این حال ، من باید به همه هشدار دهم که این فایل را پایین بیاورند: کدی که من نوشتم بسیار زیبا نیست و اغلب به dev-PC من متصل است. بنابراین من همه را تشویق می کنم تا یک راه حل بهتر ، بهتر و پایدارتر ایجاد کنند.

1drv.ms/u/s!Aq7eBym1bHDKkKcigYzt8az9WEYOOg…

شبکه

در کد مثال ، کد Pi از طریق Visual Studio در IPAddress در شبکه من مستقر می شود. احتمالاً باید این مورد را متناسب با شرایط خود تغییر دهید. برای انجام این کار - پس از باز کردن راه حل در Visual Studio روی پروژه ARM client راست کلیک کنید ، سپس ویژگی ها را انتخاب کرده و مقدار Remote machine را به IPAddress Pi خود تغییر دهید. همچنین باید اجازه دهید ترافیک از مشتری به سرور دیگر در پورت 8123 در فایروال ویندوز روی سرور (رایانه شخصی) منتقل شود. اگر راه حل را از Visual Studio اجرا می کنید ، باید از شما بخواهد که این کار را برای U انجام دهید.

در حین برنامه نویسی برای برقراری ارتباط صحیح W32 و UWP بسیار مشکل داشتم. من با استفاده از دو کلاس جداگانه در کلاینت و سرور کار کردم: resp MyEchoClient.cs (در سرویس گیرنده ARM) و ConnectionClient.cs (متصل به ارتباطات سرویس گیرنده در سرور).

فایل های موزاییک - کلاس سفارشی

RoboPhoto موزاییک هایی را برای تقلید از تصویر هدف ایجاد می کند. این تصویر هدف ، و تمام عکس های جداگانه ای که با هم موزاییک آینده را تشکیل می دهند ، و برخی دیگر از ویژگی های هر RoboPhoto در فایل های یک سیستم فایل ذخیره می شود. کد همراه من از مجموعه ای از فایل ها و پوشه ها در فهرست c: / tmp / MosaicBuilder استفاده می کند. در این پوشه ، کد همه زیر پوشه ها را با نام پوشه ای که با [prj_] شروع می شود به عنوان پوشه های پروژه موزاییک می خواند. در تمام این پوشه های [prj_] سعی می شود یک فایل پروژه با نام [_projectdata.txt] باز شود که حاوی تمام اطلاعات مورد نیاز برای هر پروژه باشد.

چنین فایل پروژه ای شامل موارد زیر است:

  1. مسیر کامل و نام فایل تصویر هدف این پروژه
  2. مسیر کامل ذخیره عکسهای جداگانه (قطعات) این پروژه
  3. تعداد ستونهایی که موزاییک شامل خواهد شد
  4. تعداد ردیف های موزاییک شامل خواهد بود

نمونه پروژه ها در فایل زیپ ارائه شده است: / 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: با تشکر

متشکرم
متشکرم

ممنون که دستورالعمل من را مطالعه کردید. این اولین مورد من بود امیدوارم ازش لذت برده باشی.

توصیه شده: