Talaan ng mga Nilalaman:

Device sa Pagsubaybay sa Mukha! Python & Arduino: 5 Hakbang
Device sa Pagsubaybay sa Mukha! Python & Arduino: 5 Hakbang

Video: Device sa Pagsubaybay sa Mukha! Python & Arduino: 5 Hakbang

Video: Device sa Pagsubaybay sa Mukha! Python & Arduino: 5 Hakbang
Video: Leap Motion SDK 2024, Hulyo
Anonim
Image
Image
Device sa Pagsubaybay sa Mukha! Python at Arduino
Device sa Pagsubaybay sa Mukha! Python at Arduino
Device sa Pagsubaybay sa Mukha! Python at Arduino
Device sa Pagsubaybay sa Mukha! Python at Arduino

Sa pamamagitan ng Techovator0819 Aking Youtube ChannelMasunod Pa sa may-akda:

IoT: Weather Box (na may Pasadyang Mga Alarma at Timer)
IoT: Weather Box (na may Pasadyang Mga Alarma at Timer)
IoT: Weather Box (na may Pasadyang Mga Alarma at Timer)
IoT: Weather Box (na may Pasadyang Mga Alarma at Timer)
Ang multi-functional Autonomous Robot: 'Asset'
Ang multi-functional Autonomous Robot: 'Asset'
Ang multi-functional Autonomous Robot: 'Asset'
Ang multi-functional Autonomous Robot: 'Asset'

Tungkol sa: Gusto ko lang gumawa ng mga bagong bagay. Tulad ng mga bagay na nakikipag-usap sa mga micro-controler, mechanical engineering, Artipisyal na Katalinuhan, Computer Science at anupaman sa lahat na interesado ako. At dito makikita mo ang lahat… Higit Pa Tungkol sa Techovator0819 »

Kumusta ang lahat doon na binabasa ang itinuturo na ito. Ito ay isang aparato sa pagsubaybay sa mukha na gumagana sa isang library ng sawa na tinatawag na OpenCV. Ang CV ay nangangahulugang 'Computer Vision'. Pagkatapos ay nag-set up ako ng isang serial interface sa pagitan ng aking PC at ng aking Arduino UNO. Kaya't nangangahulugan ito na hindi lamang ito gumagana sa Python.

Kinikilala ng aparatong ito ang iyong mukha sa frame, pagkatapos ay nagpapadala ito ng ilang mga utos sa Arduino na iposisyon ang camera sa paraang mananatili ito sa loob ng frame! Parang cool? Sumakay agad dito.

Mga gamit

1. Arduino UNO

2. 2 x Servo Motors (Anumang servo motor ay magiging maayos ngunit ginamit ko ang Tower Pro SG90)

3. Pag-install ng Python

4. Pag-install ng OpenCV

5. Web-Camera

Hakbang 1: Pag-install ng Python at OpenCV

Ang pag-install ng Python ay medyo tuwid!

www.python.org/downloads/

Maaari mong sundin ang link sa itaas upang i-download ang bersyon ng sawa (Mac, windows o Linux) na pinakaangkop sa iyo (64 bit o 32 bit). Ang natitirang proseso ng pag-install ay simple at gagabayan ka ng interface.

Kapag natapos mo ang pag-install, buksan ang iyong prompt ng utos at i-type ang sumusunod:

pip install opencv-python

Dapat i-install iyon sa openCV library. Sa kaso ng pag-shoot ng problema, maaari mong suriin ang pahinang ITO.

Matapos ma-set up ang Kapaligiran at lahat ng mga kinakailangan, tingnan natin kung paano natin talaga maitatayo ito!

Hakbang 2: Ano ang Mga Tampok na Parang Haar?

Ang mga tampok na tulad ng haar ay mga tampok ng isang digital na imahe. Ang pangalan ay nagmula sa Haar wavelets. Ito ang pamilya ng mga parisukat na hugis-alon na ginagamit na kilalanin ang mga tampok sa isang digital na imahe. Ang Haar cascades ay karaniwang isang classifier na makakatulong sa amin na makita ang mga bagay (sa aming mga mukha ng kaso) gamit ang mga tampok na tulad ng haar.

Sa aming kaso, para sa pagiging simple, gagamitin namin ang paunang sanay na Haar Cascades upang makilala ang mga mukha. Maaari mong sundin ang link na ITO ng isang pahina ng github at i-download ang xml file para sa Haar Cascade.

1. Mag-click sa 'haarcascade_frontalface_alt.xml'

2. Mag-click sa pindutang 'Raw' sa kanang bahagi sa itaas ng code window.

3. Idirekta ka nito sa isa pang pahina na may teksto lamang.

4. Mag-right click at pindutin ang 'I-save bilang..'

5. I-save ito sa parehong direktoryo o folder tulad ng sa python code na tungkol sa iyong isulat.

Hakbang 3: Pag-coding sa Python

import cv2

i-import ang numpy bilang np i-import ang oras ng serial import

Ina-import namin ang lahat ng mga silid-aklatan na kailangan namin.

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

Lumilikha kami ng isang serial object na tinatawag na 'ard'. Tinukoy din namin ang Pangalan ng Port at ang BaudRate bilang mga parameter.

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

Lumilikha kami ng isa pang bagay para sa aming Haar Cascade. Siguraduhin na ang HaarCascade file ay mananatili sa parehong folder tulad ng programang ito sawa.

vid = cv2. VideoCapture (0)

Lumilikha kami ng isang object sa nakunan ng video mula sa webcam. Ang 0 bilang parameter ay nangangahulugang ang unang web cam na nakakonekta sa aking PC.

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

habang Totoo:

_, frame = vid.read () # binabasa ang kasalukuyang frame sa variable frame na kulay-abong = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) #converts frame -> grayscaled image #. Ang sumusunod na linya ay nakakakita ng mga mukha. Ang #First parameter ay ang imahe kung saan nais mong tuklasin sa # minSize = () na tumutukoy sa minimum na laki ng mukha sa mga tuntunin ng mga pixel = (80, 80), minNeighbours = 3) #A para sa loop upang makita ang mga mukha. para sa (x, y, w, h) sa mga mukha: cv2.rectangle (frame, (x, y), (x + w, y + h), (255, 0, 0), 2) #draws isang rektanggulo sa paligid ang mukha Xpos = x + (w / 2) # kinakalkula ang X na co-ordinate ng gitna ng mukha. Ypos = y + (h / 2) #calcualtes ang Y co-ordinate ng gitna ng mukha kung Xpos> 280: # Ang mga sumusunod na code block ay suriin kung ang mukha ay ard.write ('L'.encode ()) #on ang kaliwa, kanan, itaas o ibaba na patungkol sa oras. pagtulog (0.01) # gitna ng frame. elif Xpos 280: ard.write ('D' ('S'.encode ()) oras. Matulog (0.01) masira ang cv2.imshow (' frame ', frame) # Ipinapakita ang frame sa isang hiwalay na window. k = cv2.waitKey (1) & 0xFF kung (k == ord ('q')): #if 'q' ay pinindot sa keyboard, lalabas ito ng habang loop. pahinga

cv2.destroyAllWindows () # sarado ang lahat ng mga bintana

ard.close () #Sara ang serial na komunikasyon

vid.release () #hihinto ang pagtanggap ng video mula sa web cam.

Hakbang 4: Programming ang Arduino

Huwag mag-atubiling baguhin ang programa ayon sa pag-setup ng iyong hardware na angkop sa iyong mga pangangailangan.

# isama

Servo servoX;

Servo servoY;

int x = 90;

int y = 90;

walang bisa ang pag-setup () {

// ilagay ang iyong setup code dito, upang tumakbo nang isang beses: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); pagkaantala (1000); }

input ng char = ""; // serial input ay naka-imbak sa variable na ito

void loop () {

// ilagay ang iyong pangunahing code dito, upang tumakbo nang paulit-ulit: kung (Serial.available ()) {// sinusuri kung ang anumang data ay nasa serial buffer input = Serial.read (); // binabasa ang data sa isang variable kung (input == 'U') {servoY.write (y + 1); // inaayos ang anggulo ng servo ayon sa input y + = 1; // ina-update ang halaga ng anggulo} iba pa kung (input == 'D') {servoY.write (y-1); y - = 1; } iba pa {servoY.write (y); } kung (input == 'L') {servoX.write (x-1); x - = 1; } iba pa kung (input == 'R') {servoX.write (x + 1); x + = 1; } iba pa {servoX.write (x); } input = ""; // clears the variable} // proseso ay patuloy na inuulit !!:)}

Hakbang 5: Konklusyon

Ito ay isang maganda at isang interactive na paraan kung saan maaari mong idisenyo ang isama ang Computer Vision sa iyong mga proyekto sa Arduino. Ang Computer Vision ay talagang masaya. At inaasahan ko talaga na nagustuhan ninyo ito. Kung oo, ipaalam sa akin sa mga komento. At mangyaring mag-subscribe sa aking youtube channel. Salamat nang maaga <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/video

Inirerekumendang: