Inhoudsopgave:

Gezichtsvolgapparaat! Python en Arduino: 5 stappen
Gezichtsvolgapparaat! Python en Arduino: 5 stappen

Video: Gezichtsvolgapparaat! Python en Arduino: 5 stappen

Video: Gezichtsvolgapparaat! Python en Arduino: 5 stappen
Video: А вот Булли заценил!😾 #симбочка #симба #тигра 2024, Juli-
Anonim
Image
Image
Gezichtsvolgapparaat! Python & Arduino
Gezichtsvolgapparaat! Python & Arduino
Gezichtsvolgapparaat! Python & Arduino
Gezichtsvolgapparaat! Python & Arduino

Door Techovator0819Mijn YouTube-kanaalVolg meer van de auteur:

IoT: Weather Box (met aangepaste alarmen en timers)
IoT: Weather Box (met aangepaste alarmen en timers)
IoT: Weather Box (met aangepaste alarmen en timers)
IoT: Weather Box (met aangepaste alarmen en timers)
De multifunctionele Autonome Robot: 'Asset'
De multifunctionele Autonome Robot: 'Asset'
De multifunctionele Autonome Robot: 'Asset'
De multifunctionele Autonome Robot: 'Asset'

Over: Ik hou er gewoon van om nieuwe dingen te maken. Zoals dingen die te maken hebben met microcontrollers, werktuigbouwkunde, kunstmatige intelligentie, informatica en alles wat me interesseert. En hier vind je alle… Meer over Techovator0819 »

Hallo iedereen die dit instructable leest. Dit is een apparaat voor het volgen van gezichten dat werkt op een python-bibliotheek genaamd OpenCV. CV staat voor 'Computervisie'. Daarna heb ik een seriële interface opgezet tussen mijn pc en mijn Arduino UNO. Dus dat betekent dat dit niet alleen op Python werkt.

Dit apparaatje herkent je gezicht in het frame, dan stuurt het bepaalde commando's naar de Arduino om de camera zo te positioneren dat het binnen het frame blijft! Klinkt goed? Laten we er dan meteen in springen.

Benodigdheden

1. Arduino UNO

2. 2 x servomotoren (alle servomotoren zijn prima, maar ik gebruikte Tower Pro SG90)

3. Python installeren

4. OpenCV installeren

5. Webcamera

Stap 1: Python en OpenCV installeren

Het installeren van Python is vrij eenvoudig!

www.python.org/downloads/

U kunt de bovenstaande link volgen om de python-versie (Mac, Windows of Linux) te downloaden die het beste bij u past (64 bit of 32 bit). De rest van het installatieproces is eenvoudig en u wordt door de interface geleid.

Zodra u klaar bent met de installatie, opent u uw opdrachtprompt en typt u het volgende:

pip installeer opencv-python

Dat zou de openCV-bibliotheek moeten installeren. Voor het oplossen van problemen kunt u DEZE pagina bekijken.

Na het opzetten van de Omgeving en alle randvoorwaarden, laten we eens kijken hoe we dit daadwerkelijk kunnen bouwen!

Stap 2: Wat zijn haar-achtige kenmerken?

Haarachtige kenmerken zijn kenmerken van een digitaal beeld. De naam komt van Haar wavelets. Dit is een familie van vierkante golven die worden gebruikt om kenmerken in een digitaal beeld te identificeren. Haarcascades is in feite een classificatie die ons helpt objecten (in ons geval gezichten) te detecteren met behulp van de haar-achtige functies.

In ons geval gebruiken we voor de eenvoud vooraf getrainde Haar Cascades om gezichten te identificeren. U kunt DEZE link van een github-pagina volgen en het xml-bestand voor de Haar Cascade downloaden.

1. Klik op 'haarcascade_frontalface_alt.xml'

2. Klik op de 'Raw'-knop rechtsboven in het codevenster.

3. Het zal je naar een andere pagina leiden met alleen tekst.

4. Klik met de rechtermuisknop en klik op 'Opslaan als..'

5. Sla het op in dezelfde map of map als die van de python-code die u gaat schrijven.

Stap 3: Coderen in Python

import cv2

import numpy als np import seriële importtijd

We importeren alle bibliotheken die we nodig hebben.

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

We maken een serieel object met de naam 'ard'. We specificeren ook de Port Name en de BaudRate als parameters.

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

We maken nog een object voor onze Haar Cascade. Zorg ervoor dat het HaarCascade-bestand in dezelfde map blijft als dit python-programma.

vid = cv2. VideoCapture(0)

We maken een object dat video van de webcam vastlegt. 0 als parameter betekent de eerste webcam die op mijn pc is aangesloten.

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

terwijl waar:

_, frame = vid.read()#lees het huidige frame naar de variabele frame grey = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY)#converts frame -> greyscale image #de volgende regel detecteert gezichten. #Eerste parameter is de afbeelding waarop u wilt detecteren op #minSize=() specificeert de minimale grootte van het gezicht in termen van pixels #Klik op de bovenstaande link om meer te weten over de Cascade Classification-gezichten = face_cascade.detectMultiScale(grijs, minSize =(80, 80), minNeighbours=3) #A for-lus om de gezichten te detecteren. voor (x, y, w, h) in vlakken: cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)#tekent een rechthoek rond het gezicht Xpos = x+(w/2)#berekent de X-coördinaat van het midden van het gezicht. Ypos = y+(h/2)#berekent de Y-coördinaat van het midden van het gezicht als Xpos > 280: #De volgende codeblokken controleren of het gezicht ard.write('L'.encode()) is #on links, rechts, boven of onder met betrekking tot de tijd.slaap(0.01) #midden van het frame. elif Xpos 280: ard.write('D'.encode()) time.sleep(0.01) elif Ypos < 200: ard.write('U'.encode()) time.sleep(0.01) else: ard.write ('S'.encode()) time.sleep(0.01) break cv2.imshow('frame', frame)#geeft het frame in een apart venster weer. k = cv2.waitKey(1)&0xFF if(k == ord('q')): #als 'q' op het toetsenbord wordt ingedrukt, verlaat het de while-lus. pauze

cv2.destroyAllWindows() #sluit alle vensters

ard.close() #sluit de seriële communicatie

vid.release() #stopt met het ontvangen van video van de webcam.

Stap 4: Programmeren van de Arduino

Voel je vrij om het programma aan te passen aan je hardware-instellingen om aan je behoeften te voldoen.

#erbij betrekken

Servo-servoX;

Servo-servo;

intx = 90;

int y = 90;

ongeldige setup() {

// plaats hier uw setup-code om een keer uit te voeren: Serial.begin (9600); servoX.attach (9); servoY.attach(10); servoX.write(x); servoY.write(y); vertraging (1000); }

char-invoer = ""; // seriële invoer wordt opgeslagen in deze variabele

lege lus() {

// plaats hier uw hoofdcode om herhaaldelijk uit te voeren: if(Serial.available()){ //controleert of er gegevens in de seriële bufferinvoer = Serial.read(); // leest de gegevens in een variabele if (input == 'U') {servoY.write (y+1); // past de servohoek aan volgens de invoer y + = 1; // werkt de waarde van de hoek bij } else if (invoer == 'D') {servoY.write (y-1); y-= 1; } else{ servoY.write(y); } if(invoer == 'L'){ servoX.write(x-1); x -= 1; } else if(invoer == 'R'){ servoX.write(x+1); x += 1; } anders{ servoX.write(x); } invoer = ""; //wist de variabele } //proces blijft herhalen!!:) }

Stap 5: Conclusie

Dit is een leuke en interactieve manier waarmee je Computer Vision kunt ontwerpen in je Arduino-projecten. Computer Vision is eigenlijk best leuk. En ik hoop echt dat jullie het leuk vonden. Zo ja, laat het me weten in de comments. En abonneer je op mijn YouTube-kanaal. Bij voorbaat dank <3<3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Aanbevolen: