Isi kandungan:

Peranti Penjejak Muka! Python & Arduino: 5 Langkah
Peranti Penjejak Muka! Python & Arduino: 5 Langkah

Video: Peranti Penjejak Muka! Python & Arduino: 5 Langkah

Video: Peranti Penjejak Muka! Python & Arduino: 5 Langkah
Video: MICROBIT INNOVATION SERIES WEBINAR (record version) 2024, November
Anonim
Image
Image
Peranti Penjejak Muka! Python & Arduino
Peranti Penjejak Muka! Python & Arduino
Peranti Penjejak Muka! Python & Arduino
Peranti Penjejak Muka! Python & Arduino

Oleh Techovator0819Saluran Youtube SayaMengikuti Lagi oleh pengarang:

IoT: Kotak Cuaca (dengan Penggera & Pemasa Kustom)
IoT: Kotak Cuaca (dengan Penggera & Pemasa Kustom)
IoT: Kotak Cuaca (dengan Penggera & Pemasa Kustom)
IoT: Kotak Cuaca (dengan Penggera & Pemasa Kustom)
Robot Autonomi pelbagai fungsi: 'Aset'
Robot Autonomi pelbagai fungsi: 'Aset'
Robot Autonomi pelbagai fungsi: 'Aset'
Robot Autonomi pelbagai fungsi: 'Aset'

Tentang: Saya suka membuat perkara baru. Seperti perkara yang berkaitan dengan pengawal mikro, kejuruteraan mekanikal, Kecerdasan Buatan, Sains Komputer dan apa sahaja yang menarik minat saya. Dan di sini anda akan menjumpai semua… Lebih Lanjut Mengenai Techovator0819 »

Halo semua di luar sana membaca arahan ini. Ini adalah alat penjejak wajah yang berfungsi di perpustakaan python yang disebut OpenCV. CV bermaksud 'Computer Vision'. Kemudian saya menyediakan antara muka bersiri antara PC saya dan Arduino UNO saya. Oleh itu, ini bukan hanya berfungsi pada Python.

Peranti ini mengenali wajah Anda di dalam bingkai, lalu mengirimkan perintah tertentu ke Arduino untuk meletakkan kamera sedemikian rupa sehingga tetap berada di dalam bingkai! Bunyi sejuk? Mari kita masuk ke dalamnya.

Bekalan

1. Arduino UNO

2. 2 x Motor Servo (Mana-mana motor servo akan baik tetapi saya menggunakan Tower Pro SG90)

3. Memasang Python

4. Memasang OpenCV

5. Kamera Web

Langkah 1: Memasang Python dan OpenCV

Memasang Python agak lurus ke hadapan!

www.python.org/downloads/

Anda boleh mengikuti pautan di atas untuk memuat turun versi python (Mac, windows atau Linux) yang paling sesuai dengan anda (64 bit atau 32 bit). Selebihnya proses pemasangan adalah mudah dan anda akan dipandu oleh antara muka.

Setelah selesai memasang, buka arahan arahan anda dan ketik perkara berikut:

memasang pip opencv-python

Itu mesti memasang perpustakaan openCV. Sekiranya terdapat masalah dalam penggambaran, anda boleh melihat halaman INI.

Setelah menyediakan Persekitaran dan semua prasyarat, mari kita lihat bagaimana kita dapat membina ini!

Langkah 2: Apakah Ciri-ciri seperti Haar?

Ciri seperti Haar adalah ciri gambar digital. Nama itu berasal dari gelombang gelombang Haar. Ini adalah keluarga gelombang berbentuk persegi yang digunakan mengenal pasti ciri dalam gambar digital. Haar cascades pada dasarnya adalah pengkelasan yang membantu kita mengesan objek (dalam keadaan muka kita) menggunakan ciri seperti haar.

Dalam kes kami, untuk kesederhanaan, kami akan menggunakan Haar Cascades yang sudah dilatih untuk mengenal pasti wajah. Anda boleh mengikuti pautan INI dari halaman github dan memuat turun fail xml untuk Haar Cascade.

1. Klik pada 'haarcascade_frontalface_alt.xml'

2. Klik pada butang 'Raw' di bahagian kanan atas tetingkap kod.

3. Ini akan mengarahkan anda ke halaman lain dengan teks sahaja.

4. Klik kanan dan tekan 'Save as..'

5. Simpan dalam direktori atau folder yang sama dengan kod python yang hendak anda tulis.

Langkah 3: Pengekodan di Python

import cv2

import numpy sebagai masa import siri np import

Kami mengimport semua perpustakaan yang kami perlukan.

ard = bersiri. Serial ("COM3", 9600)

Kami membuat objek bersiri yang dipanggil 'ard'. Kami juga menentukan Nama Port dan BaudRate sebagai parameter.

face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml')

Kami membuat objek lain untuk Haar Cascade kami. Pastikan fail HaarCascade tetap berada di folder yang sama dengan program python ini.

vid = cv2. VideoCapture (0)

Kami membuat objek untuk menangkap video dari kamera web. 0 sebagai parameter bermaksud cam web pertama yang disambungkan ke PC saya.

docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html

Walaupun Betul:

_, frame = vid.read () # membaca bingkai semasa ke bingkai berubah-ubah kelabu = cv2.cvtColor (bingkai, cv2. COLOR_BGR2GRAY) #convert frame -> gambar skala kelabu # baris berikut mengesan wajah. Parameter # pertama adalah gambar yang ingin anda kesan pada # minSize = () menentukan ukuran minimum wajah dari segi piksel # Klik pautan di atas untuk mengetahui lebih lanjut mengenai wajah Pengelasan Cascade = face_cascade.detectMultiScale (kelabu, minSize = (80, 80), minNeighbour = 3) #A untuk gelung untuk mengesan wajah. untuk (x, y, w, h) di wajah: cv2. segi empat tepat (bingkai, (x, y), (x + w, y + h), (255, 0, 0), 2) #melukis sebuah segi empat tepat di sekitar wajah Xpos = x + (w / 2) # menghitung koordinat X pusat wajah. Ypos = y + (h / 2) #calcualtes koordinat Y dari pusat wajah jika Xpos> 280: # Blok kod berikut memeriksa apakah wajah itu ard.write ('L'.encode ()) #on kiri, kanan, atas atau bawah berkenaan dengan masa. tidur (0,01) # pusat bingkai. elif Xpos 280: ard.write ('D'.encode ()) time.sleep (0.01) elif Ypos <200: ard.write (' U'.encode ()) time.sleep (0.01) lain: ard.write ('S'.encode ()) time.sleep (0.01) break cv2.imshow (' frame ', frame) #menampilkan bingkai di tetingkap yang terpisah. k = cv2.waitKey (1) & 0xFF jika (k == ord ('q')): #if 'q' ditekan pada papan kekunci, ia keluar dari gelung sementara. rehat

cv2.destroyAllWindows () # menutup semua tetingkap

ard.close () # menutup komunikasi bersiri

vid.release () #berhenti menerima video dari cam web.

Langkah 4: Memprogram Arduino

Jangan ragu untuk mengubah suai program mengikut persediaan perkakasan anda yang sesuai dengan keperluan anda.

#sertakan

Servo servoX;

Servo servoY;

int x = 90;

int y = 90;

batal persediaan () {

// letakkan kod persediaan anda di sini, untuk dijalankan sekali: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); kelewatan (1000); }

input char = ""; // input bersiri disimpan dalam pemboleh ubah ini

gelung kosong () {

// letakkan kod utama anda di sini, untuk dijalankan berulang kali: jika (Serial.available ()) {// memeriksa apakah ada data dalam input buffer bersiri = Serial.read (); // membaca data menjadi pemboleh ubah jika (input == 'U') {servoY.write (y + 1); // menyesuaikan sudut servo mengikut input y + = 1; // mengemas kini nilai sudut} yang lain jika (input == 'D') {servoY.write (y-1); y - = 1; } lain {servoY.write (y); } jika (input == 'L') {servoX.write (x-1); x - = 1; } lain jika (input == 'R') {servoX.write (x + 1); x + = 1; } lain {servoX.write (x); } input = ""; // membersihkan pemboleh ubah} // proses terus berulang !!:)}

Langkah 5: Kesimpulannya

Ini adalah cara yang baik dan interaktif di mana anda boleh merancang menggabungkan Computer Vision dalam projek Arduino anda. Penglihatan Komputer sebenarnya cukup menyeronokkan. Dan saya sangat berharap bahawa anda telah menyukainya. Sekiranya ya, beritahu saya dalam komen. Dan sila melanggan saluran youtube saya. Terima kasih terlebih dahulu <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Disyorkan: