Isi kandungan:

TRACKING WAJAH MENGGUNAKAN ARDUINO !!!: 7 Langkah
TRACKING WAJAH MENGGUNAKAN ARDUINO !!!: 7 Langkah

Video: TRACKING WAJAH MENGGUNAKAN ARDUINO !!!: 7 Langkah

Video: TRACKING WAJAH MENGGUNAKAN ARDUINO !!!: 7 Langkah
Video: Tracking Wajah dengan kamera (Face recognition OpenCV, Python, Data base & Arduino) 2024, Julai
Anonim
TRACKING WAJAH MENGGUNAKAN ARDUINO !!!
TRACKING WAJAH MENGGUNAKAN ARDUINO !!!

Dalam arahan sebelumnya saya telah berkongsi bagaimana anda dapat berkomunikasi antara Arduino dan Python menggunakan modul 'pyserial' dan mengawal LED. Sekiranya anda belum melihatnya, lihat di sini: KOMUNIKASI ANTARA ARDUINO & PYTHON!

Dan bagaimana anda dapat mengesan warna objek dan mengesannya di skrin, Periksa di sini: PENETAPAN WARNA MENGGUNAKAN OPENCV DAN PYTHON.

Dalam Instructable ini saya akan menunjukkan kepada anda cara mengesan wajah menggunakan Arduino & Python dan membuat Kamera mengikuti wajah. Ini mungkin terdengar sukar tetapi percayalah tidak, Yang anda perlukan hanyalah pengetahuan asas mengenai Arduino dan Python.

Oleh itu, mari bermula …

Langkah 1: Perkara yang Anda Perlu:

Perkara yang Anda Perlu
Perkara yang Anda Perlu
Perkara yang Anda Perlu
Perkara yang Anda Perlu
Perkara yang Anda Perlu
Perkara yang Anda Perlu

Keperluannya minimum. Di sini saya telah memberikan senarai bahagian dari semua yang anda perlukan:

Keperluan Perkakasan:

  • Arduino UNO (Amazon US / Amazon EU)
  • Kamera Web (Amazon US / Amazon EU)
  • Servos x 2 (Amazon US / Amazon EU)
  • Papan Roti (Amazon US / Amazon EU)
  • Servo Pan Tilt Kit (Amazon US / Amazon EU)

Keperluan Perisian:

  1. Python 2.7 (Sekiranya dipasang, OS Linux biasanya sudah memasangnya)
  2. OpenCV (Anda boleh memuat turunnya secara berasingan atau memasang menggunakan 'pip install' Dijelaskan lebih lanjut)
  3. pyserial (Boleh dipasang dengan pip)
  4. kekenyangan.
  5. Haarcascade.

Setelah setiap perkara dikumpulkan, kita boleh beralih ke Langkah Pemasangan…

Langkah 2: Menetapkan Persekitaran Python:

Menetapkan Persekitaran Python
Menetapkan Persekitaran Python
Menetapkan Persekitaran Python
Menetapkan Persekitaran Python
Menetapkan Persekitaran Python
Menetapkan Persekitaran Python

Memasang Python:

Jadi pertama kita memerlukan Python 2.7 dan berjalan. Untuk melakukan ini, muat turun pertama dan Pasang python 2.7.14. Untuk memeriksa sama ada ia dipasang dengan betul Pergi: Carian Windows >> Ketik "IDLE" >> Tekan Enter. Shell Python mesti muncul.

ATAU

Dalam carian jenis 'CMD' dan tekan enter untuk membuka Prompt Perintah. Dalam jenis CMD >> python dan tekan enter, antara muka Python harus dipaparkan.

Sekiranya anda melihat kesalahan dalam CMD, Jangan panik, anda mungkin perlu menetapkan pemboleh ubah persekitaran. Anda boleh mengikuti tutorial ini di sini untuk menyediakan Pembolehubah Persekitaran.

Memasang 'pyserial', 'OpenCV "dan" numpy "di python:

Untuk memasang modul ini, kami akan menggunakan pemasangan pip, Buka CMD pertama dan taipkan kod berikut: -

siri pemasangan pip

pip install opencv-python> pip install numpy

arahan ini akan memasang modul yang diperlukan. Sekarang kita boleh beralih ke bahagian pengkodan …

Langkah 3: Skrip Python:

Skrip Python
Skrip Python

Sebelum mula menulis kod, perkara pertama yang perlu dilakukan ialah membuat folder baru kerana semua kod tersebut perlu disimpan dalam folder yang sama. Oleh itu, buat folder baru, namakan apa sahaja yang anda mahukan. dan muat turun 'Haarcascade' dari bawah dan tampal di folder.

Sekarang buka notepad dan tulis skrip yang diberikan di bawah ini, Simpan sebagai 'face.py' dalam folder yang sama dengan haarcascade. (Anda boleh memuat turun kod yang telah saya berikan di bawah):

#import semua modul yang diperlukan

import numpy sebagai np import serial import time import sys import cv2 #Setup Communication path untuk arduino (Sebagai ganti 'COM5' letakkan port tempat arduino anda disambungkan) arduino = serial. Serial ('COM5', 9600) time.sleep (2) cetak ("Terhubung ke arduino …") #mengimport Haarcascade untuk pengesanan wajah face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Untuk menangkap aliran video dari kamera web. cap = cv2. VideoCapture (0) #Baca gambar yang diambil, ubah menjadi gambar Kelabu dan cari wajah sementara 1: ret, img = cap.read () cv2.resizeWindow ('img', 500, 500) cv2.line (img, (500, 250), (0, 250), (0, 255, 0), 1) cv2.line (img, (250, 0), (250, 500), (0, 255, 0), 1) cv2.circle (img, (250, 250), 5, (255, 255, 255), -1) grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) face = face_cascade.detectMultiScale (kelabu, 1.3) # mengesan wajah dan membuat segi empat tepat di sekelilingnya. untuk (x, y, w, h) di muka: cv2. segi empat tepat (img, (x, y), (x + w, y + h), (0, 255, 0), 5) roi_gray = kelabu [y: y + h, x: x + w] roi_color = img [y: y + h, x: x + w] arr = {y: y + h, x: x + w} cetak (arr) cetak ('X: '+ str (x)) cetak (' Y: '+ str (y)) cetak (' x + w: '+ str (x + w)) cetak (' y + h: '+ str (y + h)) # Pusat roi (Rectangle) xx = int (x + (x + h)) / 2 yy = int (y + (y + w)) / 2 print (xx) print (yy) center = (xx, yy) # menghantar data ke cetakan arduino ("Center of Rectangle is:", center) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" + data + "'") arduino.write (data) #Lihat aliran. cv2.imshow ('img', img) #Hit 'Esc' untuk menghentikan pelaksanaan k = cv2.waitKey (30) & 0xff jika k == 27: rehat

Setelah ini selesai, teruskan menulis kod untuk arduino…

Langkah 4: Kod Arduino:

Kod Arduino
Kod Arduino

Setelah skrip python siap, kita memerlukan lakaran arduino untuk mengawal servo. Rujuk kod di bawah, tampal di Arduino IDE dan simpan sebagai 'servo.ino' dalam folder yang sama dengan face.py dan haarcascade. muat naik kod dan teruskan ke langkah seterusnya untuk membuat sambungan.

(Fail yang boleh dimuat turun di bawah)

#sertakan

Servo servoVer; // Vertikal Servo Servo servoHor; // Servo Mendatar int x; int y; int prevX; int prevY; batal persediaan () {Serial.begin (9600); servoVer.attach (5); // Pasang Servo Vertikal ke Pin 5 servoHor.attach (6); // Pasang Servo Mendatar ke Pin 6 servoVer.write (90); servoHor.write (90); } kekosongan Pos () {if (prevX! = x || prevY! = y) {int servoX = peta (x, 600, 0, 70, 179); int servoY = peta (y, 450, 0, 179, 95); servoX = min (servoX, 179); servoX = maks (servoX, 70); servoY = min (servoY, 179); servoY = maks (servoY, 95); servoHor.write (servoX); servoVer.write (servoY); }} gelung void () {if (Serial.available ()> 0) {if (Serial.read () == 'X') {x = Serial.parseInt (); jika (Serial.read () == 'Y') {y = Serial.parseInt (); Pos (); }} sementara (Serial.available ()> 0) {Serial.read (); }}}

Langkah 5: Mekanisme Pan-Tilt: -

Mekanisme Pan-Tilt
Mekanisme Pan-Tilt
Mekanisme Pan-Tilt
Mekanisme Pan-Tilt

Saya telah menggunakan kit yang tersedia untuk Pan-Tilt. Sekiranya anda mahu, anda boleh membuatnya sendiri menggunakan kayu / plastik atau bahkan cetakan 3D.

Yang saya gunakan cukup murah, dan sangat senang dipasang. Tetapi jika anda mahukan arahan mengenai cara melakukannya, anda boleh mendapatkannya di sini.

Langkah 6: Membuat Sambungan:

Membuat Sambungan
Membuat Sambungan
Membuat Sambungan
Membuat Sambungan

Litarnya cukup mudah. Cukup pasangkan dua servo ke arduino.

  1. Tegak ke Pin 5
  2. Melintang ke Pin 6
  3. Kuasa hingga + 5V
  4. Tanah ke GND

Periksa rajah litar untuk rujukan.

Langkah 7: UJIAN:

  • Setelah semuanya selesai, perkara terakhir yang perlu dilakukan adalah menguji apakah ia berjaya. Untuk menguji terlebih dahulu pastikan bahawa servo disambungkan dengan betul ke arduino dan sketsa dimuat naik.
  • Setelah sketsa dimuat, pastikan untuk menutup IDE supaya port bebas disambungkan ke python.
  • Sekarang buka 'face.py' dengan Python IDLE dan tekan 'F5' untuk menjalankan kod. Ia akan mengambil masa beberapa saat untuk menyambung ke arduino dan kemudian anda akan dapat melihat tetingkap streaming web cam. Sekarang kod akan mengesan wajah anda dan servo akan mengesannya melacaknya.
  • Servo harus bergerak semasa anda menggerakkan objek. Sekarang pasangkan kamera ke servo sehingga ia akan bergerak bersama dengan servo.

Terima kasih.

Disyorkan: