Mündəricat:

RoboPhoto - İctimaiyyət üçün bir mozaika generatoru: 4 addım
RoboPhoto - İctimaiyyət üçün bir mozaika generatoru: 4 addım

Video: RoboPhoto - İctimaiyyət üçün bir mozaika generatoru: 4 addım

Video: RoboPhoto - İctimaiyyət üçün bir mozaika generatoru: 4 addım
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, Noyabr
Anonim
Image
Image
RoboPhoto - İctimaiyyət üçün bir mozaika generatoru
RoboPhoto - İctimaiyyət üçün bir mozaika generatoru
RoboPhoto - İctimaiyyət üçün bir mozaika generatoru
RoboPhoto - İctimaiyyət üçün bir mozaika generatoru

RoboPhoto, real vaxt fotomozaik generatorudur

RoboPhoto istifadəçilərinin fotomozaikasını yaradır - gözləyərkən.

Görüntü işləmə, üz tanıma və süni intellekt kimi müasir rəqəmsal üsullardan istifadə edərək, RoboPhoto keçmişdən keçən və onun düyməsini basan bütün ziyarətçilərin fotomozaykasını yaratmağa qadirdir.

Hər dəfə düyməyə basıldıqda əlindəki adamın şəkli çəkilir. Dərhal hər bir şəkil RoboPhoto tərəfindən skan edilir və şərh olunur. RoboPhoto proqramı daha sonra bütün fərdi şəkilləri dəyişdirəcək - daha böyük bir görüntünün bir hissəsi olacaq və sonra bu dəyişdirilmiş şəkli hər bir fotoşəkilin daha böyük bir şəkildəki yerini göstərən bir koordinat dəsti ilə etiketə yazdırın. Daha sonra hər bir ziyarətçidən yalnız uyğun bir ızgara olan daha böyük bir kətana öz foto stikerini yerləşdirməsi xahiş olunur.

RoboPhoto əməliyyat zamanı yeni bir görüntü yaradılacaq. Bu fərdi fotoşəkillərdən ibarət, əvvəlcədən təyin edilmiş 'hədəf görüntüsünü' təqlid edəcək bir fotomozayka.

RoboPhoto eyni zamanda tək istifadəçi rejimində də işləyir. Bu şəkildə konfiqurasiya edildikdə, RoboPhoto tək bir istifadəçinin tam mozaikasını yaradır.

Təchizat

  • Visual Studio və IoT paketləri quraşdırılmış Windows 10 PC
  • Microsoft Windows 10 IoT quraşdırılmış Raspberry Pi 3B+
  • Rəng etiketli printer (Brother VC-500W)
  • İstifadəçi girişi üçün postamentə quraşdırılmış böyük qırmızı düymə
  • İstifadəçi rəyləri üçün bir HDMI ekranı
  • Fotoşəkil çəkmək üçün oğlumdan oğurlanmış Microsoft Xbox Kinect v2 kamera
  • Şəbəkə (Wifi, LAN)
  • Hədəf şəbəkəsi. Üzərində çapı olan bir kağız vərəqi -koordinatları ilə doldurulur. Bu kağız ızgara, ziyarətçilərin fotoşəkillərini təyin olunmuş koordinatlara yapışdıra biləcəyi kətan kimi istifadə olunur. Və nəticədə birlikdə birlikdə son nəticəni meydana gətirəcəklər: gözəl, yeni bir fotomozaik.

Dərinlikdə şəkillər çəkə biləcəyi üçün icrosoft Kinect 2.0 kamera istifadə edildi. Bu xüsusiyyət hər bir fotoqrafda virtual yaşıl ekran yaratmaq üçün istifadə olunur. Bu şəkildə RoboPhoto, hər bir fotoşəkilin arxa planını mozaika içərisində bir hədəf parçasının rənginə uyğunlaşdıra bilər.

Addım 1: Necə İşləyir

Necə İşləyir
Necə İşləyir
Necə İşləyir
Necə İşləyir
Necə İşləyir
Necə İşləyir
Necə İşləyir
Necə İşləyir

RoboPhoto, üzərində böyük qırmızı düymə olan bir postament, etiket yazıcısı olan bir kompüter və İstifadəçi İnterfeysini idarə edən kiçik bir IoT cihazı (ekran və düymə) olan bir qurğudur. Mənim vəziyyətimdə: RaspBerry 3B+.

  1. RoboPhoto ictimaiyyət üçün əlçatan bir yerdə fəaliyyət göstərir və (işə salındıqdan sonra) özünü idarə edir. Qaçarkən, keçən qonaqları RoboPhoto böyük qırmızı düyməsini basmağa təşviq edir.
  2. O böyük qırmızı düyməyə hər dəfə basıldığı zaman RoboPhoto, Kinect kamerası ilə düyməni basan ziyarətçinin şəklini çəkəcək.
  3. Sonra RoboPhoto qabaqcıl A. I. -dən istifadə edəcək. və hər bir fotoşəkili mozaika içərisində bir parçaya uyğun olaraq dəyişdirmək üçün görüntü işləmə bacarıqları. Buna nail olmaq üçün RoboPhoto, hər bir fotoşəkilin fonunu əvvəlcədən yüklənmiş şəkildəki hədəf parçasının rənginə uyğunlaşdıraraq yenidən rəngləndirir. Redaktə edildikdən sonra RoboPhoto, düzəldilmiş fotoşəkili mozaikanın içərisində bu bir etiketin yerini göstərən koordinatlar dəsti ilə birlikdə stikerə çap edir.

  4. Daha sonra istifadəçidən stikeri mozaika hədəf vərəqinə yerləşdirməsi xahiş olunur.
  5. Və beləliklə - bir çox insanın ziyarətindən sonra yeni bir sənət əsəri ortaya çıxacaq. Bir mozaika yaratmaq üçün çoxlu fərdi parçalara ehtiyacınız olacaq. 600 ədəd işləyən yaxşı nəticələr əldə etdim

RoboPhoto eyni zamanda bir istifadəçi rejimində də işləyə bilər.

Bu konfiqurasiyada RoboPhoto, tək bir istifadəçidən düzəldilmiş fotoşəkillərdən ibarət tam bir mozaika yaradır. Düyməni vurduqdan sonra RoboPhoto istifadəçinin təxminən> 600 fərqli fotoşəkilini çəkəcək və sonra hamısını əvvəlcədən seçilmiş hədəf görüntüsündən sonra yaradılmış tək bir yeni mozaika meydana gətirəcək şəkildə düzəldəcək.

Addım 2: Avadanlıqların yığılması

Avadanlıqların yığılması
Avadanlıqların yığılması
Avadanlıqların yığılması
Avadanlıqların yığılması

Yuxarıdakı şəkildə göstərildiyi kimi, Win 10 PC Kinect kamerasına bağlıdır. Kinect USB 3.0 ilə bağlanmalıdır. RoboPhoto yaratdığım zaman - USB 3.0 ilə heç bir Raspberry Pi mövcud deyildi.*

PC, əlavə edilmiş etiket yazıcısına çap etmək üçün də istifadə olunur. Mənim vəziyyətimdə bir qardaş VC-500W. Kifayət qədər ucuz bir ev rəngli etiket yazıcısı. Bununla birlikdə çox yavaş gedir. Mümkünsə peşəkarlardan istifadə etmək daha yaxşıdır.

Böyük Qırmızı Düymə bir Raspberry Pi 3B+-ə bağlıdır. GPIO -ya yalnız 4 tel bağlanır. Bu təlimatda lazım olan yeganə lehimdir. Pi, HDMI üzərindən 7 '' TFT ekranı ilə ziyarətçimizə geri dönüş təmin edir.

Səliqəyə salmaq üçün bütün bu komponentləri tutan taxta bir kaide tikdim.

Kürsünün yanında, divara qarşı, hədəf ızgarası və koordinatları olan bir kağız vərəqi qoyulur (A1/A2). İstifadə etdiyim etiket yazıcısı, etiket genişliyi = 2, 5 sm ilə maksimuma çıxardığından, bu cədvəldəki bütün kvadratlar 2, 5 sm x 2, 5 sm ölçüdədir.

*Bu gün Raspberry Pi4 USB3.0 təklif edir. Alse W10 cihazda işləyə bilər. Beləliklə, PC istifadə etmədən RoboPhoto v2.0 yaratmaq nəzəri cəhətdən mümkün olmalıdır. Bəlkə də Covid '19, belə bir Təlimat kitabını tezliklə dərc etmək üçün mənə kifayət qədər vaxt ayıracaq.

Addım 3: Kod yazmaq

Kod yazmaq
Kod yazmaq
Kod yazmaq
Kod yazmaq

Kod

RoboPhoto, VisualStudio ilə iki layihədən ibarət bir həll olaraq yaradıldı:

  1. Kompüterdəki Windows Forms tətbiqi bir TCP serverinə ev sahibliyi edir və Kinect girişini idarə edir
  2. Button press hadisələrini idarə etmək və istifadəçiyə 7 düymlük TFT ekranı vasitəsilə geribildirim vermək üçün UWP rəhbərliyindəki bir tətbiqdə (başlanğıc-tətbiq olaraq təyin olunmuş) bir TCP müştəri yerləşdirən Raspberry Pi 3B+.

Yuxarıdakı diaqramda, yumşaqlığımın nə etdiyi barədə sizə bir fikir verməyə çalışdım. Bunu yaratmaq üçün yazdığım Visual Studio (tamamilə 100% işləyən) RoboPhoto həlli bu Təlimatla təmin edilmişdir. Ancaq bu faylı aşağı salan hər kəsə xəbərdarlıq etməliyəm: Yazdığım kod çox gözəl deyil və tez-tez dev-PC-yə bağlanır. Buna görə hər kəsi daha yaxşı, daha yaxşı və daha sabit bir həll yaratmağa təşviq edirəm.

1drv.ms/u/s!Aq7eBym1bHDKkKcigYzt8az9WEYOOg…

Şəbəkə

Nümunə kodunda, Pi kodu Visual Studio vasitəsi ilə şəbəkəmdəki bir IPAddressə yerləşdirilir. Yəqin ki, bunu özünüzə uyğun olaraq dəyişdirməlisiniz. Bunu etmək üçün - Visual Studio -da həllini açdıqdan sonra ARM müştəri layihəsinə sağ vurun, sonra xassələri seçin və Uzaqdan olan maşının dəyərini öz Pi -nin IP ünvanına köçürün. Ayrıca, serverdəki (Windows) Firewall içərisində 8123 portunda müştəridən serverə gedən trafikə icazə verməlisiniz. Çözümü Visual Studio'dan çalıştırırsanız, bunu U üçün etməyinizi istəməlidir.

Kodlaşdırarkən W32 və UWP -nin düzgün ünsiyyət qurması ilə bağlı çox problem yaşadım. Müştəri və serverdə iki ayrı sinifdən istifadə edərək işə başladım: resp MyEchoClient.cs (ARM müştərisində) və ConnectionClient.cs (serverdə müştəri əlaqələrini saxlamaq).

Mosaic faylları - xüsusi sinif

RoboPhoto, hədəf görüntüsünü təqlid etmək üçün mozaika yaradır. Bu hədəf şəkli və hər bir RoboPhoto'nun digər xüsusiyyətlərinin yanında mozaikanı meydana gətirən bütün fərdi fotoşəkillər bir fayl sistemindəki fayllarda saxlanılır. Mənim müşayiət etdiyim kod c: / tmp / MosaicBuilder qovluğunda bir sıra fayl və qovluqlardan istifadə edir. Bu qovluqda kod, [prj_] ilə başlayan bütün alt qovluqları mozaika layihə qovluqları olaraq oxuyacaq. Bütün bu [prj_] qovluqlarında hər bir layihə üçün lazım olan bütün məlumatları ehtiva edən [_projectdata.txt] adlı bir layihə faylını açmağa çalışacaq.

Belə bir layihə faylı aşağıdakılardan ibarətdir:

  1. bu layihənin hədəf görüntüsünün tam yolu və fayl adı
  2. bu layihənin fərdi fotoşəkillərinin (parçalarının) saxlandığı tam yol
  3. Mozaikanın ehtiva edəcəyi sütunların sayı
  4. Mozaikanın ehtiva edəcəyi sıra sayı

Nümunə layihələr zip faylında verilmişdir: / slnBBMosaic2 / wfMosaicServerKinect / bin / x86 / Debug / prj_xxx

C# server kodunda, bütün mozaika işlənməsi xüsusi bir sinif vasitəsilə aparılır: BBMosaicProject.cs

Microsoft Kinect v2.0 - Yaşıl ekran

Hər hansı bir kamera yalnız fotoşəkil çəkdirəcək. Ancaq rəngli şəkilləri və dərinlik şəkillərini birləşdirmək üçün Microsoft Kinect v2.0 istifadə etdim. Bu yolla yaşıl ekran effekti yarana bilər. Kinect -dən alınan bütün rəngli şəkillərdəki fon vahid yaşıl bir səthlə əvəz olunacaq (BBBackgroundRemovalTool.cs).

Microsoft. Kinect -ə istinad server layihəsinə əlavə edildi.

EMGU

Düyməyə basıldığı zaman çəkilən fotoşəkildə bir insanın olduğuna əmin olmalıyıq, çünki RoboPhoto'ya üz tanıma qabiliyyəti əlavə edildi.

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

Yalnız bir adam şəkil içərisində olduqda, bu şəkildəki yaşıl ekran, vahid rəngli bir səthlə əvəz olunacaq, bu şəkil gələcəkdə mozaikada hədəfin ortalamasına bərabər rəng kodlarına sahib olacaq.

Addım 4: Təşəkkür edirəm

Çox sağ ol
Çox sağ ol

Təlimatımı oxuduğunuz üçün təşəkkür edirəm. Bu mənim ilk işim idi. Ümid edirəm zövq aldınız.

Tövsiyə: