Isi kandungan:

RoboPhoto - Penjana Mosaik untuk Orang ramai: 4 Langkah
RoboPhoto - Penjana Mosaik untuk Orang ramai: 4 Langkah

Video: RoboPhoto - Penjana Mosaik untuk Orang ramai: 4 Langkah

Video: RoboPhoto - Penjana Mosaik untuk Orang ramai: 4 Langkah
Video: Why the Monument to Communism in the Sky was ABANDONED 2024, November
Anonim
Image
Image
RoboPhoto - Penjana Mosaik untuk Orang ramai
RoboPhoto - Penjana Mosaik untuk Orang ramai
RoboPhoto - Penjana Mosaik untuk Orang Awam
RoboPhoto - Penjana Mosaik untuk Orang Awam

RoboPhoto adalah penjana fotomosaik masa nyata

RoboPhoto membuat fotomosaik penggunanya - sementara anda menunggu.

Dengan menggunakan teknik digital moden seperti pemprosesan gambar, pengecaman wajah dan kecerdasan buatan, RoboPhoto mampu membuat fotomosa semua pengunjung yang berjalan melewati dan menekan butang - dalam masa nyata.

Setiap kali butang ditekan, foto diambil dari orang yang berada di tangan. Seketika setiap foto diimbas dan ditafsirkan oleh RoboPhoto. Perisian RoboPhoto kemudian akan mengubah semua gambar individu - sehingga akan menjadi sebahagian daripada gambar yang lebih besar, dan kemudian mencetak gambar yang diubah ini ke pelekat berlabel satu set koordinat yang menunjukkan lokasi setiap foto dalam gambar yang lebih besar itu. Setiap pengunjung kemudian diminta meletakkan pelekat foto mereka sendiri ke kanvas yang lebih besar yang hanya mengandungi grid yang sesuai.

Semasa operasi RoboPhoto, gambar baru akan dibuat. Fotomosa yang terdiri daripada gambar-gambar individu ini yang akan meniru 'gambar sasaran' yang telah ditentukan.

RoboPhoto juga beroperasi dalam mod pengguna tunggal. Apabila dikonfigurasi dengan cara ini, RoboPhoto membuat mozek penuh untuk satu pengguna.

Bekalan

  • PC Windows 10 dengan pakej Visual Studio dan IoT dipasang
  • Raspberry Pi 3B + dengan Microsoft Windows 10 IoT dipasang
  • Pencetak label warna (Brother VC-500W)
  • Tombol tekan merah besar dipasang pada alas untuk input pengguna
  • Skrin HDMI untuk maklum balas pengguna
  • Kamera Microsoft Xbox Kinect v2 - dicuri dari anak lelaki saya - untuk mengambil gambar
  • Rangkaian (Wifi, LAN)
  • Grid sasaran. Selembar kertas dengan grid dicetak di atasnya - diisi dengan koordinat. Kotak kertas ini digunakan sebagai kanvas di mana pengunjung boleh melekatkan gambar mereka pada koordinat yang ditentukan. Dan akhirnya mereka akan membentuk hasil akhir: fotomosaik baru yang indah.

Kamera icrosoft Kinect 2.0 digunakan kerana dapat mengambil gambar mendalam. Ciri ini digunakan untuk membuat skrin hijau maya pada setiap gambar individu. Dengan cara ini RoboPhoto dapat mengecat latar belakang pada setiap gambar individu agar sesuai dengan warna sekeping sasaran di dalam mozek.

Langkah 1: Bagaimana Ia Beroperasi

Bagaimana Ia Beroperasi
Bagaimana Ia Beroperasi
Bagaimana Ia Beroperasi
Bagaimana Ia Beroperasi
Bagaimana Ia Beroperasi
Bagaimana Ia Beroperasi
Bagaimana Ia Beroperasi
Bagaimana Ia Beroperasi

RoboPhoto adalah pemasangan yang berisi alas dengan butang merah besar di atasnya, komputer dengan pencetak label terpasang, dan peranti IoT kecil yang mengendalikan Antaramuka Pengguna (skrin dan butang). Dalam kes saya: RaspBerry 3B +.

  1. RoboPhoto beroperasi di lokasi yang boleh diakses oleh orang ramai dan (setelah menghidupkannya) beroperasi sendiri. Semasa berlari, pengunjung yang lewat didorong oleh RoboPhoto untuk menekan butang merah besarnya.
  2. Setiap kali butang merah besar itu ditekan, RoboPhoto akan mengambil gambar pengunjung yang hanya menekan butang dengan kamera Kinect.
  3. Kemudian RoboPhoto akan menggunakan A. I. yang canggih. dan kemahiran memproses gambar untuk mengubah setiap foto agar sepadan dengan sekeping dalam mozek yang akan menjadi. Untuk mencapainya, RoboPhoto mengecat latar belakang setiap foto agar sesuai dengan warna sekeping sasaran dalam gambar yang dimuatkan sebelumnya. Selepas pengeditan, RoboPhoto mencetak foto yang diedit ke pelekat bersama dengan satu set koordinat yang menunjukkan lokasi pelekat yang satu ini di dalam mozek.

  4. Kemudian pengguna diminta meletakkan pelekat itu pada lembaran sasaran mozek.
  5. Oleh itu - setelah banyak orang mengunjungi - karya seni baru akan muncul. Untuk membuat mozek, anda memerlukan banyak keping. Saya mendapat hasil yang lumayan dengan 600 keping

RoboPhoto juga boleh beroperasi dalam mod pengguna tunggal.

Dalam konfigurasi ini RoboPhoto membuat mozek penuh gambar yang diedit dari satu pengguna tunggal. Setelah menekan butang, RoboPhoto akan merakam sekitar> 600 gambar pengguna yang berbeza, dan kemudian mengedit dan mengatur semuanya untuk membentuk satu mosaik baru, yang dibuat setelah gambar sasaran yang dipilih sebelumnya.

Langkah 2: Menyusun Perkakasan

Memasang Perkakasan
Memasang Perkakasan
Memasang Perkakasan
Memasang Perkakasan

Seperti yang ditunjukkan dalam gambar di atas, Win 10 PC disambungkan ke kamera Kinect. Kinect mesti disambungkan dengan USB 3.0. Pada masa saya membuat RoboPhoto - tidak ada Raspberry Pi dengan USB 3.0. *

PC juga digunakan untuk menangani percetakan ke label label yang dilampirkan. Dalam kes saya, Brother VC-500W. Pencetak label warna isi rumah yang agak murah. Walau bagaimanapun, ia sangat perlahan. Lebih baik gunakan yang profesional jika anda boleh.

Butang Merah Besar dilekatkan pada Raspberry Pi 3B +. Hanya 4 wayar yang dipasang pada GPIO. Ini adalah satu-satunya pematerian yang diperlukan dalam Instructable ini. Pi juga memberikan maklum balas kepada pengunjung kami melalui skrin TFT 7 melalui HDMI.

Untuk merapikannya, saya membina alas kayu yang memegang semua komponen ini.

Di sebelah alas, di dinding, selembar kertas yang mengandungi grid sasaran dan koordinat diletakkan (A1 / A2). Oleh kerana pencetak label saya menggunakan maksimum dengan lebar label = 2, 5 cm, semua petak dalam grid ini berukuran 2, 5cm x 2, 5cm.

* Hari ini, Raspberry Pi4 menawarkan USB3.0. Alse W10 boleh dijalankan pada peranti. Oleh itu, secara teorinya mungkin untuk membuat RoboPhoto v2.0 tanpa penggunaan PC. Mungkin Covid '19 akan memberi saya masa yang cukup untuk menerbitkan arahan yang tidak lama lagi.

Langkah 3: Menulis Kod

Menulis Kod
Menulis Kod
Menulis Kod
Menulis Kod

Kod

RoboPhoto dibuat dengan VisualStudio sebagai penyelesaian dengan dua projek:

  1. Aplikasi Windows Forms di PC menghosting pelayan TCP dan mengendalikan input Kinect
  2. Raspberry Pi 3B + yang mengehoskan klien TCP dalam aplikasi yang diketuai UWP (ditetapkan sebagai aplikasi permulaan) untuk menangani acara tekan Butang dan memberikan maklum balas kepada pengguna melalui layar TFT 7 ".

Dalam rajah di atas, saya telah cuba memberi anda idea tentang apa yang dilakukan oleh soft saya. Visual Studio yang saya tulis untuk membuat penyelesaian (benar-benar 100% berfungsi) penyelesaian RoboPhoto ini disediakan dengan Instructable ini. Walau bagaimanapun, saya mesti memberi amaran kepada semua orang bahawa fail ini tidak disekat: Kod yang saya tulis jauh dari cantik dan sering terikat pada PC dev saya. Oleh itu, saya menggalakkan semua orang untuk membuat penyelesaian yang lebih baik, lebih baik dan stabil.

1drv.ms/u/s!Aq7eBym1bHDKkKcigYzt8az9WEYOOg…

Rangkaian

Dalam kod contoh, kod Pi disebarkan melalui Visual Studio ke IPAddress di rangkaian saya. Anda mungkin harus mengubahnya agar sesuai dengan yang anda miliki. Untuk melakukan ini - klik kanan projek klien ARM setelah membuka penyelesaian di Visual Studio, kemudian pilih sifat dan tetapkan nilai Mesin jarak jauh ke IPAddress Pi anda sendiri. Anda juga perlu membenarkan lalu lintas dari klien ke pelayan pada port 8123 dalam Windows Firewall pada pelayan (PC). Sekiranya anda menjalankan penyelesaian dari Visual Studio, ia harus meminta anda melakukannya untuk U.

Semasa pengekodan, saya menghadapi banyak masalah agar W32 & UWP dapat berkomunikasi dengan betul. Saya berjaya dengan menggunakan dua kelas berasingan dalam klien & pelayan: respon MyEchoClient.cs (dalam klien ARM) dan ConnectionClient.cs (menyambungkan sambungan pelanggan di pelayan).

Fail mosaik - kelas tersuai

RoboPhoto membuat mozek untuk meniru gambar sasaran. Gambar sasaran ini, dan semua foto individu yang bersama-sama membentuk mozek-to-be, serta beberapa sifat lain dari setiap RoboPhoto disimpan dalam fail dalam sistem fail. Kod saya yang disertakan menggunakan sekumpulan fail & folder dalam direktori c: / tmp / MosaicBuilder. Di dalam folder ini, kod akan membaca semua subfolder dengan nama folder yang bermula dengan [prj_] sebagai folder projek mozek. Dalam semua folder [prj_] ini, ia akan cuba membuka file project bernama [_projectdata.txt] yang mengandungi semua maklumat yang diperlukan untuk setiap projek.

Fail projek seperti ini terdiri daripada:

  1. jalan penuh & nama fail gambar sasaran projek ini
  2. jalan penuh di mana gambar individu (kepingan) projek ini disimpan
  3. Jumlah lajur yang akan dikandung mozek
  4. Jumlah baris mozek akan mengandungi

Contoh projek disediakan dalam fail zip: / slnBBMosaic2 / wfMosaicServerKinect / bin / x86 / Debug / prj_xxx

Dalam kod pelayan C #, semua pengendalian mosaik dilakukan melalui kelas khusus: BBMosaicProject.cs

Microsoft Kinect v2.0 - Skrin Hijau

Untuk mengambil gambar, apa sahaja yang boleh dilakukan oleh kamera. Tetapi saya telah menggunakan Microsoft Kinect v2.0 untuk menggabungkan gambar warna & gambar kedalaman. Dengan cara ini, kesan skrin hijau dapat dibuat. Latar belakang dalam semua gambar warna yang diterima dari Kinect akan diganti dengan permukaan hijau yang seragam (BBBackgroundRemovalTool.cs).

Rujukan ke Microsoft. Kinect telah ditambahkan ke projek pelayan.

EMGU

Kerana kita perlu memastikan seseorang berada di foto yang diambil ketika butang ditekan, kemampuan pengecaman wajah ditambahkan ke RoboPhoto.

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

Hanya apabila seseorang berada dalam gambar, skrin hijau dalam gambar ini akan digantikan oleh permukaan berwarna seragam, dengan kod warna sama dengan warna rata-rata benda sasaran dalam mozek yang akan menjadi gambar ini.

Langkah 4: Terima kasih

Terima kasih
Terima kasih

Terima kasih kerana membaca Instructable saya. Ini adalah yang pertama saya. Saya harap anda menikmatinya.

Disyorkan: