Përmbajtje:

Pajisja për përcjelljen e fytyrës! Python & Arduino: 5 hapa
Pajisja për përcjelljen e fytyrës! Python & Arduino: 5 hapa

Video: Pajisja për përcjelljen e fytyrës! Python & Arduino: 5 hapa

Video: Pajisja për përcjelljen e fytyrës! Python & Arduino: 5 hapa
Video: Встреча №2-24.04.2022 | Диалог и ориентация членов команды Е... 2024, Nëntor
Anonim
Image
Image
Pajisja për përcjelljen e fytyrës! Python & Arduino
Pajisja për përcjelljen e fytyrës! Python & Arduino
Pajisja për përcjelljen e fytyrës! Python & Arduino
Pajisja për përcjelljen e fytyrës! Python & Arduino

Nga Techovator0819 Kanali im në Youtube Ndiqni më shumë nga autori:

IoT: Kutia e motit (me alarmet dhe kohëmatësit e personalizuar)
IoT: Kutia e motit (me alarmet dhe kohëmatësit e personalizuar)
IoT: Kutia e motit (me alarmet dhe kohëmatësit e personalizuar)
IoT: Kutia e motit (me alarmet dhe kohëmatësit e personalizuar)
Roboti autonom shumëfunksional: 'Aseti'
Roboti autonom shumëfunksional: 'Aseti'
Roboti autonom shumëfunksional: 'Aseti'
Roboti autonom shumëfunksional: 'Aseti'

Rreth: Unë thjesht dua të bëj gjëra të reja. Ashtu si gjërat që kanë të bëjnë me mikro-kontrolluesit, inxhinierinë mekanike, Inteligjencën Artificiale, Shkencat Kompjuterike dhe gjithçka që më intereson. Dhe këtu do të gjeni të gjitha… Më shumë Rreth Techovator0819 »

Përshëndetje për të gjithë ata që e lexojnë këtë udhëzues. Kjo është një pajisje për përcjelljen e fytyrës e cila punon në një bibliotekë python të quajtur OpenCV. CV qëndron për "Vizioni kompjuterik". Pastaj krijova një ndërfaqe serike midis PC tim dhe Arduino UNO. Pra, kjo do të thotë se kjo nuk funksionon vetëm në Python.

Kjo pajisje njeh fytyrën tuaj në kornizë, pastaj dërgon komanda të caktuara në Arduino për të pozicionuar kamerën në mënyrë të tillë që të qëndrojë brenda kornizës! Tingëllon mirë? Le të futemi menjëherë në të.

Furnizimet

1. Arduino UNO

2. 2 x Servo Motors (Çdo motor servo do të jetë mirë, por kam përdorur Tower Pro SG90)

3. Instalimi i Python

4. Instalimi i OpenCV

5. Web-Kamera

Hapi 1: Instalimi i Python dhe OpenCV

Instalimi i Python është shumë i drejtë përpara!

www.python.org/downloads/

Mund të ndiqni lidhjen e mësipërme për të shkarkuar versionin python (Mac, Windows ose Linux) i cili ju përshtatet më së miri (64 bit ose 32 bit). Pjesa tjetër e procesit të instalimit është e thjeshtë dhe do të udhëhiqeni nga ndërfaqja.

Pasi të keni mbaruar instalimin, hapni komandën dhe shkruani sa vijon:

pip instaloni opencv-python

Kjo duhet të instalojë bibliotekën openCV. Në rast të problemeve me të shtënat, mund të shikoni KIST page faqe.

Pasi të kemi krijuar Mjedisin dhe të gjitha parakushtet, le të shohim se si mund ta ndërtojmë në të vërtetë këtë!

Hapi 2: Cilat janë tiparet e ngjashme me Haar?

Karakteristikat e ngjashme me Haar janë tiparet e një imazhi dixhital. Emri vjen nga valët Haar. Këto janë familje të valëve në formë katrore të cilat përdoren për të identifikuar tiparet në një imazh dixhital. Kaskadat Haar janë në thelb një klasifikues i cili na ndihmon të zbulojmë objekte (në rastin tonë në fytyrat) duke përdorur tiparet e ngjashme me haarin.

Në rastin tonë, për thjeshtësinë, ne do të përdorim kaskadat e para-stërvitura Haar për të identifikuar fytyrat. Ju mund të ndiqni këtë lidhje të një faqe github dhe të shkarkoni skedarin xml për Kaskadën Haar.

1. Klikoni në 'haarcascade_frontalface_alt.xml'

2. Klikoni në butonin 'Raw' në pjesën e sipërme të djathtë të dritares së kodit.

3. Do t'ju drejtojë në një faqe tjetër me vetëm tekst.

4. Klikoni me të djathtën dhe goditni 'Ruaje si..'

5. Ruajeni në të njëjtën drejtori ose dosje me atë të kodit python për të cilin po shkruani.

Hapi 3: Kodimi në Python

import cv2

import numpy si np import import serial kohë

Ne importojmë të gjitha bibliotekat që na duhen.

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

Ne krijojmë një objekt serik të quajtur 'ard'. Ne gjithashtu specifikojmë Emrin e Portit dhe BaudRate si parametra.

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

Ne krijojmë një objekt tjetër për Kaskadën tonë Haar. Sigurohuni që skedari HaarCascade të mbetet në të njëjtën dosje me këtë program python.

vid = cv2. VideoCapture (0)

Ne krijojmë një objekt që kap video nga kamera në internet. 0 si parametër nënkupton kamerën e parë në internet të lidhur me kompjuterin tim.

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

ndërsa e vërtetë:

_, frame = vid.read ()#lexon kuadrin aktual në kornizën e ndryshueshme gri = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) #konverton kornizën -> imazhin e gri#linja e mëposhtme zbulon fytyrat. #Parametri i parë është imazhi në të cilin dëshironi të zbuloni në #minSize = () specifikon madhësinë minimale të fytyrës në drejtim të pikselave #Klikoni lidhjen e mësipërme për të ditur më shumë rreth fytyrave të Klasifikimit të Kaskadës = face_cascade.detectMultiScale (gri, minSize) = (80, 80), minFqinjët = 3) #A për lak për të zbuluar fytyrat. për (x, y, w, h) në fytyra: cv2. drejtkëndësh (kornizë, (x, y), (x+w, y+h), (255, 0, 0), 2)#vizaton një drejtkëndësh rreth fytyra Xpos = x+(w/2)#llogarit koordinatën X të qendrës së fytyrës. Ypos = y+(h/2) #vlerëson koordinatën Y të qendrës së fytyrës nëse Xpos> 280: #Kodi i mëposhtëm bllokon nëse fytyra është ard.write ('L'.encode ()) #on majtas, djathtas, lart ose poshtë në lidhje me kohën. gjumi (0.01) #qendra e kornizës. elif Xpos 280: ard.write ('D'.encode ()) koha.fjet (0.01) elif Ypos <200: ard.write (' U'.encode ()) koha.fjetje (0.01) tjetër: ard.shkruaj ('S'.ekodimi ()) time.sleep (0.01) pushim cv2.imshow (' kornizë ', kornizë)#shfaq kornizën në një dritare të veçantë. k = cv2.waitKey (1) & 0xFF nëse (k == ord ('q')): #if 'q' shtypet në tastierë, del nga laku while. pushim

cv2.destroyAllWindows () #mbyll të gjitha dritaret

ard.mbylle () #mbyll komunikimin serik

vid.release () #ndalon marrjen e videos nga ueb -kamera.

Hapi 4: Programimi i Arduino

Mos ngurroni të modifikoni programin sipas konfigurimit tuaj të harduerit që i përshtatet nevojave tuaja.

#përfshi

Servo servoX;

Servo servoY;

int x = 90;

int y = 90;

void setup () {

// vendosni kodin tuaj të konfigurimit këtu, për të ekzekutuar një herë: Serial.begin (9600); servoX.tash (9); servoY.shtoj (10); servoX.shkruaj (x); servoY.shkruani (y); vonesa (1000); }

hyrja e char = ""; // hyrja serike ruhet në këtë ndryshore

lak void () {

// vendosni kodin tuaj kryesor këtu, për ta ekzekutuar në mënyrë të përsëritur: if (Serial.available ()) {// kontrollon nëse ka të dhëna në inputin serial buffer = Serial.read (); // lexon të dhënat në një ndryshore nëse (input == 'U') {servoY.write (y+1); // rregullon këndin servo sipas hyrjes y += 1; // përditëson vlerën e këndit} else if (input == 'D') {servoY.write (y-1); y -= 1; } tjetër {servoY.vrite (y); } if (input == 'L') {servoX.write (x-1); x -= 1; } else if (input == 'R') {servoX.write (x+1); x += 1; } else {servoX.shkruaj (x); } input = ""; // pastron ndryshoren} // procesi vazhdon të përsëritet !!:)}

Hapi 5: Përfundimi

Kjo është një mënyrë e bukur dhe një ndërvepruese përmes së cilës ju mund të krijoni të inkorporoni Computer Vision në projektet tuaja Arduino. Vizioni kompjuterik është në të vërtetë mjaft argëtues. Dhe me të vërtetë shpresoj që juve ju ka pëlqyer. Nëse po, më tregoni në komente. Dhe ju lutemi regjistrohuni në kanalin tim në youtube. Faleminderit paraprakisht <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Recommended: