Tartalomjegyzék:

ARCKÖVETÉS ARDUINO HASZNÁLATÁVAL !!!: 7 lépés
ARCKÖVETÉS ARDUINO HASZNÁLATÁVAL !!!: 7 lépés

Videó: ARCKÖVETÉS ARDUINO HASZNÁLATÁVAL !!!: 7 lépés

Videó: ARCKÖVETÉS ARDUINO HASZNÁLATÁVAL !!!: 7 lépés
Videó: OMSI 2 - opentracking teszt (head tracking - arckövetés) 2024, Július
Anonim
ARCKÖVETÉS ARDUINO HASZNÁLATÁVAL !!!
ARCKÖVETÉS ARDUINO HASZNÁLATÁVAL !!!

Egy korábbi utasításban megosztottam, hogyan kommunikálhat az Arduino és a Python között a 'pyserial' modul használatával és vezérelhet egy LED -et. Ha még nem látta, nézze meg itt: ARDUINO & PYTHON KÖZLEMÉNYE!

És hogyan lehet észlelni egy objektum színét és nyomon követni azt a képernyőn, nézze meg itt: SZÍNFELISMERÉS OPENCV ÉS PYTHON HASZNÁLATÁVAL.

Ebben az utasításban megmutatom, hogyan kell nyomon követni az arcokat az Arduino és a Python segítségével, és hogy a kamera kövesse az arcot. Ez nehéznek tűnhet, de higgye el, hogy nem az. Csak az Arduino és a Python alapvető ismereteire van szüksége.

Tehát kezdjük…

1. lépés: Amire szüksége lesz:

Amire szüksége lesz
Amire szüksége lesz
Amire szüksége lesz
Amire szüksége lesz
Amire szüksége lesz
Amire szüksége lesz

A követelmények minimálisak. Itt megadtam az alkatrészek listáját, amire szüksége van:

Hardverkövetelmény:

  • Arduino UNO (Amazon USA / Amazon EU)
  • Webkamera (Amazon USA / Amazon EU)
  • Szervók x 2 (Amazon USA / Amazon EU)
  • Kenyeretábla (Amazon USA / Amazon EU)
  • Szervo pan billenő készlet (Amazon USA / Amazon EU)

Szoftverkövetelmény:

  1. Python 2.7 (telepíteni kell, a Linux operációs rendszer általában előre telepíti)
  2. OpenCV (Letöltheti külön, vagy telepítheti a „pip install” használatával További magyarázat)
  3. pyserial (pipával felszerelhető)
  4. szar.
  5. Haarcascade.

Miután mindent összegyűjtöttünk, folytathatjuk a telepítési lépést…

2. lépés: A Python környezet beállítása:

A Python környezet beállítása
A Python környezet beállítása
A Python környezet beállítása
A Python környezet beállítása
A Python környezet beállítása
A Python környezet beállítása

A Python telepítése:

Tehát először a Python 2.7 programra van szükség. Ehhez először töltse le és telepítse a python 2.7.14 -et. A telepítés helyességének ellenőrzéséhez lépjen: Windows Keresés >> Írja be az "IDLE" >> Nyomja meg az Enter billentyűt. Meg kell jelennie egy Python Shellnek.

VAGY

A keresés során írja be a "CMD" parancsot, és nyomja meg az Enter billentyűt a parancssor megnyitásához. CMD típusban >> python és nyomja meg az Enter billentyűt, a Python felületnek meg kell jelennie.

Ha hibát lát a CMD -ben, ne essen pánikba, valószínűleg környezeti változót kell beállítania. A környezeti változó beállításához kövesse ezt az oktatóanyagot.

A 'pyserial', 'OpenCV' és a 'numpy' telepítése a pythonba:

Ezen modulok telepítéséhez a pip install, Először nyissa meg a CMD-t, és írja be a következő kódokat:-

pip install serial

pip install opencv-python> pip install numpy

ezek a parancsok telepítik a szükséges modulokat. Most áttérhetünk a kódoló részre…

3. lépés: Python -szkript:

Python -szkript
Python -szkript

Mielőtt elkezdené írni a kódot, először létre kell hoznia egy új mappát, mivel az összes kódot ugyanabban a mappában kell tárolni. Tehát hozzon létre egy új mappát, nevezzen el bármit. és töltse le a „Haarcascade” alulról, és illessze be a mappába.

Most nyissa meg a Jegyzettömböt, és írja be az alábbi szkriptet. Mentse el 'face.py' néven ugyanabba a mappába, mint a haarcascade. (Az általam megadott kódot letöltheti az alábbi fájlból):

#importálja az összes szükséges modult

import numpy mint np import sorozat importálás ideje import sys import cv2 #Setup Kommunikációs útvonal az arduino számára (A „COM5” helyett adja meg azt a portot, amelyhez az arduino csatlakozik) arduino = serial. Serial („COM5”, 9600) time.sleep (2) print ("Connected to arduino…") #importing a Haarcascade arcfelismerésre face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #A videofolyam webkameráról történő rögzítéséhez. cap = cv2. VideoCapture (0) #Olvassa el a rögzített képet, alakítsa át szürke színűvé, és keressen arcokat, míg 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) szürke = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) arcok = face_cascade.detectMultiScale (szürke, 1.3) # észleli az arcot, és téglalapot készít köré. (x, y, w, h) esetén arcon: cv2.téglalap (img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = szürke [y: y+h, x: x+w] roi_color = img [y: y+h, x: x+w] arr = {y: y+h, x: x+w} print (arr) print ('X: '+str (x)) print (' Y: '+str (y)) print (' x+w: '+str (x+w)) print (' y+h: '+str (y+h))) # Roi középpontja (téglalap) xx = int (x+(x+h))/2 yy = int (y+(y+w))/2 print (xx) print (yy) center = (xx, yy) # adatok küldése arduino printre ("A téglalap központja:", center) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" +data + "" ") arduino.write (data) #A stream megjelenítése. cv2.imshow ('img', img) #Hit 'Esc' a végrehajtás befejezéséhez k = cv2.waitKey (30) & 0xff, ha k == 27: break

Ha ez megtörtént, írja le az arduino kódját…

4. lépés: Arduino kód:

Arduino kód
Arduino kód

Miután a python parancsfájl készen áll, szükségünk van arduino vázlatra a szervó vezérléséhez. Olvassa el az alábbi kódot, illessze be az Arduino IDE -be, és mentse el „servo.ino” néven ugyanabba a mappába, mint a face.py és a haarcascade. töltse fel a kódot, és folytassa a következő lépéssel a kapcsolatok létrehozásához.

(Az alábbiakban letölthető fájl)

#befoglalni

Szervo szervoVer; // Függőleges szervo szervo szervoHor; // Vízszintes szervo int x; int y; int prevX; int prevY; void setup () {Serial.begin (9600); servoVer.attach (5); // Csatlakoztassa a függőleges szervót az 5 -ös csaphoz servoHor.attach (6); // Csatlakoztassa a vízszintes szervót a 6. csaphoz servoVer.write (90); servoHor.write (90); } void Pos () {if (prevX! = x || prevY! = y) {int servoX = térkép (x, 600, 0, 70, 179); int servoY = térkép (y, 450, 0, 179, 95); servoX = min (servoX, 179); servoX = max (servoX, 70); servoY = min (servoY, 179); szervoY = max (szervoY, 95); servoHor.write (servoX); servoVer.write (servoY); }} void loop () {if (Serial.available ()> 0) {if (Serial.read () == 'X') {x = Serial.parseInt (); if (Serial.read () == 'Y') {y = Serial.parseInt (); Pozíció(); }} while (Serial.available ()> 0) {Serial.read (); }}}

5. lépés: Pan-Tilt mechanizmus:-

Pan-Tilt mechanizmus
Pan-Tilt mechanizmus
Pan-Tilt mechanizmus
Pan-Tilt mechanizmus

Egy könnyen elérhető készletet használtam a Pan-Tilthez. Ha szeretné, saját maga készítheti el fa/műanyag vagy akár 3D nyomtatással.

Az általam használt nagyon olcsó, és nagyon könnyen összeszerelhető. Ha azonban utasításokat szeretne, hogyan kell ezt megtenni, akkor itt megtalálja.

6. lépés: Kapcsolatok létrehozása:

Kapcsolatok létrehozása
Kapcsolatok létrehozása
Kapcsolatok létrehozása
Kapcsolatok létrehozása

Az áramkör nagyon egyszerű. Csatlakoztasson két szervót az arduino -hoz.

  1. Függőleges az 5 -ös csaphoz
  2. Vízszintes a 6. csaphoz
  3. Teljesítmény +5V
  4. Földelés a GND -hez

Ellenőrizze a kapcsolási rajzot.

7. lépés: TESZTELÉS:

  • Miután minden kész, az utolsó dolog, amit meg kell vizsgálni, hogy működik -e. A teszteléshez először győződjön meg arról, hogy a szervók megfelelően csatlakoznak az arduino -hoz, és a vázlat feltöltésre került.
  • A vázlat feltöltése után zárja be az IDE -t, hogy a port szabadon kapcsolódhasson a pythonhoz.
  • Most nyissa meg a "face.py" fájlt a Python IDLE segítségével, és nyomja meg az "F5" gombot a kód futtatásához. Néhány másodpercig tart az arduino -hoz való csatlakozás, majd látnia kell egy ablakot, amely a webkamerát közvetíti. Most a kód felismeri az arcát, és a szervók nyomon követik.
  • A szervónak mozognia kell az objektum mozgatásakor. Most csak csatlakoztassa a kamerát a szervókhoz, hogy együtt mozogjon a szervókkal.

Köszönöm.

Ajánlott: