Daftar Isi:

RoboPhoto - Generator Mosaik untuk Publik: 4 Langkah
RoboPhoto - Generator Mosaik untuk Publik: 4 Langkah

Video: RoboPhoto - Generator Mosaik untuk Publik: 4 Langkah

Video: RoboPhoto - Generator Mosaik untuk Publik: 4 Langkah
Video: Robot Lawnmower 👉🏼 Ghost! 👻 2024, November
Anonim
Image
Image
RoboPhoto - Generator Mosaik untuk Publik
RoboPhoto - Generator Mosaik untuk Publik
RoboPhoto - Generator Mosaik untuk Publik
RoboPhoto - Generator Mosaik untuk Publik

RoboPhoto adalah generator fotomosaik waktu nyata

RoboPhoto membuat fotomosaik penggunanya – sambil menunggu.

Dengan menggunakan teknik digital modern seperti pemrosesan gambar, pengenalan wajah, dan kecerdasan buatan, RoboPhoto mampu membuat fotomosaik semua pengunjung yang lewat dan menekan tombolnya – secara real time.

Setiap kali tombol ditekan, foto orang yang ada di tangan akan diambil. Seketika setiap foto dipindai dan ditafsirkan oleh RoboPhoto. Perangkat lunak RoboPhoto kemudian akan mengubah semua gambar individu – sehingga akan menjadi bagian dari gambar yang lebih besar, dan kemudian mencetak gambar yang diubah ini ke stiker berlabel satu set koordinat yang menunjukkan lokasi setiap foto dalam gambar yang lebih besar. Setiap pengunjung kemudian diminta untuk menempatkan stiker foto mereka sendiri ke kanvas yang lebih besar yang hanya berisi kisi-kisi yang sesuai.

Selama pengoperasian RoboPhoto, gambar baru akan dibuat. Sebuah photomosaic yang terdiri dari foto-foto individual yang akan meniru 'target-image' yang telah ditentukan sebelumnya.

RoboPhoto juga beroperasi dalam mode pengguna tunggal. Saat dikonfigurasi dengan cara ini, RoboPhoto membuat mosaik penuh dari satu pengguna.

Perlengkapan

  • PC Windows 10 dengan Visual Studio dan paket IoT terpasang
  • Raspberry Pi 3B+ dengan Microsoft Windows 10 IoT terinstal
  • Printer label warna (Brother VC-500W)
  • Tombol tekan merah besar yang dipasang di alas untuk input pengguna
  • Layar HDMI untuk umpan balik pengguna
  • Kamera Microsoft Xbox Kinect v2 – dicuri dari anak saya- untuk mengambil foto
  • Jaringan (Wifi, LAN)
  • Sebuah jaringan sasaran. Selembar kertas dengan kisi-kisi tercetak di atasnya - diisi dengan koordinat. Kisi-kisi kertas ini digunakan sebagai kanvas dimana pengunjung dapat menempelkan foto mereka pada koordinat yang telah ditentukan. Dan akhirnya mereka akan membentuk hasil akhir bersama: photomosaic baru yang indah.

Kamera icrosoft Kinect 2.0 digunakan karena dapat mengambil gambar yang dalam. Fitur ini digunakan untuk membuat layar hijau virtual pada setiap foto individu. Dengan cara ini RoboPhoto dapat mengecat ulang latar belakang pada setiap foto individu agar sesuai dengan warna bagian target dalam calon mosaik.

Langkah 1: Bagaimana Ini Beroperasi

Bagaimana Ini Beroperasi
Bagaimana Ini Beroperasi
Bagaimana Ini Beroperasi
Bagaimana Ini Beroperasi
Bagaimana Ini Beroperasi
Bagaimana Ini Beroperasi
Bagaimana Ini Beroperasi
Bagaimana Ini Beroperasi

RoboPhoto adalah instalasi yang berisi alas dengan tombol merah besar di atasnya, komputer dengan printer label terpasang, dan perangkat IoT kecil yang menangani Antarmuka Pengguna (layar dan tombol). Dalam kasus saya: RaspBerry 3B+.

  1. RoboPhoto beroperasi dalam lokasi yang dapat diakses publik dan (setelah dinyalakan) beroperasi sendiri. Saat berlari, pengunjung yang lewat didorong oleh RoboPhoto untuk menekan tombol merah besar itu.
  2. Setiap kali tombol merah besar itu ditekan, RoboPhoto akan memotret pengunjung yang baru saja menekan tombol itu dengan kamera Kinect.
  3. Kemudian RoboPhoto akan menggunakan A. I. dan keterampilan pemrosesan gambar untuk mengubah setiap foto agar sesuai dengan bagian dalam calon mosaik. Untuk mencapai ini, RoboPhoto mengecat ulang latar belakang setiap foto agar sesuai dengan warna bagian target dalam gambar yang dimuat sebelumnya. Setelah pengeditan, RoboPhoto mencetak foto yang diedit ke stiker bersama dengan satu set koordinat yang menunjukkan lokasi stiker yang satu ini di dalam mosaik.

  4. Kemudian pengguna diminta untuk menempelkan stiker pada lembar target mosaik.
  5. Dan dengan demikian – setelah banyak orang mengunjunginya – sebuah karya seni baru akan muncul. Untuk membuat mosaik, Anda membutuhkan banyak potongan individu. Saya mendapatkan hasil yang layak dengan menjalankan 600 potongan

RoboPhoto juga dapat beroperasi dalam mode pengguna tunggal.

Dalam konfigurasi ini, RoboPhoto membuat mosaik penuh dari foto yang diedit dari satu pengguna. Setelah menekan tombol, RoboPhoto akan memotret sekitar >600 foto pengguna yang berbeda, lalu mengedit dan mengatur semuanya menjadi satu mosaik baru, yang dibuat setelah gambar target yang telah dipilih sebelumnya.

Langkah 2: Merakit Perangkat Keras

Merakit Perangkat Keras
Merakit Perangkat Keras
Merakit Perangkat Keras
Merakit Perangkat Keras

Seperti terlihat pada gambar di atas, PC Win 10 terhubung ke kamera Kinect. Kinect harus terhubung dengan USB 3.0. Saat saya membuat RoboPhoto - Raspberry Pi dengan USB 3.0 tidak tersedia.*

PC juga digunakan untuk menangani pencetakan ke printer label yang terpasang. Dalam kasus saya, Brother VC-500W. Printer label warna rumah tangga yang cukup murah. Namun, sangat sangat lambat. Lebih baik gunakan yang profesional jika Anda bisa.

Tombol Merah Besar terpasang ke Raspberry Pi 3B+. Hanya 4 kabel yang terpasang ke GPIO. Ini adalah satu-satunya penyolderan yang perlu dilakukan dalam Instruksi ini. Pi juga memberikan umpan balik kepada pengunjung kami melalui layar TFT 7 inci melalui HDMI.

Untuk merapikannya, saya membangun alas kayu yang menampung semua komponen ini.

Di sebelah alas, menempel ke dinding, selembar kertas yang berisi kisi-kisi target dan koordinat ditempatkan (A1/A2). Karena printer label yang saya gunakan maksimal dengan labelwidth = 2, 5 cm, semua kotak di grid ini berukuran 2, 5cm x 2, 5cm.

*Hari ini, Raspberry Pi4 memang menawarkan USB3.0. Selain itu W10 dapat dijalankan di perangkat. Jadi, secara teori seharusnya membuat RoboPhoto v2.0 tanpa menggunakan PC. Mungkin Covid '19 akan memberi saya cukup waktu sendiri untuk menerbitkan Instruksi semacam itu segera.

Langkah 3: Menulis Kode

Menulis Kode
Menulis Kode
Menulis Kode
Menulis Kode

Kode

RoboPhoto dibuat dengan VisualStudio sebagai solusi dengan dua proyek:

  1. Aplikasi Windows Forms di PC meng-hosting server TCP dan menangani input Kinect
  2. Raspberry Pi 3B+ yang menghosting klien TCP dalam aplikasi berkepala UWP (ditetapkan sebagai aplikasi startup) untuk menangani peristiwa penekanan tombol dan memberikan umpan balik kepada pengguna melalui layar TFT 7 inci.

Dalam diagram di atas, saya mencoba memberi Anda gambaran tentang apa yang dilakukan soft saya. Visual Studio yang saya tulis untuk membuat solusi RoboPhoto ini (benar-benar 100% berfungsi) disediakan dengan Instructable ini. Namun saya harus memperingatkan semua orang yang mengunduh file ini: Kode yang saya tulis jauh dari cantik dan sering terikat pada dev-PC saya. Jadi saya mendorong semua orang untuk menciptakan solusi yang lebih baik, lebih baik, dan lebih mantap.

1drv.ms/u/s!Aq7eBym1bHDKkKcigYzt8az9WEYOOg…

Jaringan

Dalam kode contoh, kode Pi disebarkan melalui Visual Studio ke alamat IPA di jaringan saya. Anda mungkin harus mengubah ini agar sesuai dengan milik Anda. Untuk melakukan ini - klik kanan proyek klien ARM setelah membuka solusi di Visual Studio, lalu pilih properti dan ubah nilai mesin Remote ke alamat IPA Pi Anda sendiri. Anda juga perlu mengizinkan lalu lintas dari klien ke server pada port 8123 dalam Windows Firewall di server (PC). Jika Anda menjalankan solusi dari Visual Studio, itu akan meminta Anda melakukannya untuk U.

Saat mengkode, saya mengalami banyak kesulitan untuk membuat W32 & UWP berkomunikasi dengan benar. Saya membuatnya bekerja dengan menggunakan dua kelas terpisah di klien & server: resp MyEchoClient.cs (di klien ARM) dan ConnectionClient.cs (menangani koneksi klien di server).

File mosaik - kelas khusus

RoboPhoto membuat mosaik untuk meniru gambar target. Gambar target ini, dan semua foto individu yang bersama-sama membentuk calon mosaik, serta beberapa properti lain dari setiap RoboPhoto disimpan dalam file dalam sistem file. Kode yang saya sertakan menggunakan satu set file & folder di direktori c:\tmp\MosaicBuilder. Di dalam folder ini, kode akan membaca semua subfolder dengan nama folder yang dimulai dengan [prj_] sebagai folder proyek mosaik. Di dalam semua folder [prj_] ini, ia akan mencoba membuka file proyek bernama [_projectdata.txt] yang berisi semua informasi yang diperlukan untuk setiap proyek.

File proyek semacam itu terdiri dari:

  1. path lengkap & nama file dari gambar target proyek ini
  2. jalur lengkap di mana foto-foto individu (potongan) dari proyek ini disimpan
  3. Jumlah kolom yang akan berisi mosaik
  4. Jumlah baris yang akan berisi mosaik

Contoh proyek disediakan dalam file zip: \slnBBMosaic2\wfMosaicServerKinect\bin\x86\Debug\prj_xxx

Dalam kode server C#, semua penanganan mosaik dilakukan melalui kelas khusus: BBMosaicProject.cs

Microsoft Kinect v2.0 - Layar Hijau

Untuk sekadar mengambil foto, kamera apa pun bisa digunakan. Tapi saya telah menggunakan Microsoft Kinect v2.0 untuk menggabungkan gambar berwarna & gambar kedalaman. Dengan cara ini, efek layar hijau dapat dibuat. Latar belakang semua gambar berwarna yang diterima dari Kinect akan diganti dengan permukaan hijau yang seragam (BBBackgroundRemovalTool.cs).

Referensi ke Microsoft. Kinect telah ditambahkan ke proyek server.

EMGU

Karena kita perlu memastikan seseorang berada di foto yang diambil saat tombol ditekan, kemampuan pengenalan wajah ditambahkan ke RoboPhoto.

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

Hanya ketika seseorang berada di dalam gambar, layar hijau dalam gambar ini akan digantikan oleh permukaan berwarna yang seragam, dengan kode warna yang sama dengan warna rata-rata benda target dalam calon mosaik gambar ini.

Langkah 4: Terima kasih

Terima kasih
Terima kasih

Terima kasih telah membaca Instruksi saya. Ini adalah pertama saya. Saya harap Anda menikmatinya.

Direkomendasikan: