8. Blick auf Dich¶
Dieses Projekt basiert ebenfalls auf dem 7. Computervision-Projekt, ergänzt um Algorithmen zur Gesichtserkennung.
Wenn Sie vor der Kamera erscheinen, wird sie Ihr Gesicht erkennen und ihr Gimbal so anpassen, dass Ihr Gesicht im Zentrum des Bildes bleibt.
Sie können den Bildschirm unter http://<Ihre IP>:9000/mjpg
ansehen.
Code ausführen
cd ~/picar-x/example
sudo python3 8.stare_at_you.py
Wenn der Code ausgeführt wird, wird die Kamera des Autos immer auf Ihr Gesicht starren.
Code
from picarx import Picarx
from time import sleep
from vilib import Vilib
px = Picarx()
def clamp_number(num,a,b):
return max(min(num, max(a, b)), min(a, b))
def main():
Vilib.camera_start()
Vilib.display()
Vilib.face_detect_switch(True)
x_angle =0
y_angle =0
while True:
if Vilib.detect_obj_parameter['human_n']!=0:
coordinate_x = Vilib.detect_obj_parameter['human_x']
coordinate_y = Vilib.detect_obj_parameter['human_y']
# change the pan-tilt angle for track the object
x_angle +=(coordinate_x*10/640)-5
x_angle = clamp_number(x_angle,-35,35)
px.set_cam_pan_angle(x_angle)
y_angle -=(coordinate_y*10/480)-5
y_angle = clamp_number(y_angle,-35,35)
px.set_cam_tilt_angle(y_angle)
sleep(0.05)
else :
pass
sleep(0.05)
if __name__ == "__main__":
try:
main()
finally:
px.stop()
print("stop and exit")
sleep(0.1)
Wie funktioniert des?
Diese Codezeilen in while True
lassen die Kamera dem Gesicht folgen.
while True:
if Vilib.detect_obj_parameter['human_n'] != 0:
coordinate_x = Vilib.detect_obj_parameter['human_x']
coordinate_y = Vilib.detect_obj_parameter['human_y']
# Ändere den Schwenk-Neige-Winkel, um dem Objekt zu folgen
x_angle += (coordinate_x*10/640) - 5
x_angle = clamp_number(x_angle, -35, 35)
px.set_cam_pan_angle(x_angle)
y_angle -= (coordinate_y*10/480) - 5
y_angle = clamp_number(y_angle, -35, 35)
px.set_cam_tilt_angle(y_angle)
Überprüfe, ob ein menschliches Gesicht erkannt wurde
Vilib.detect_obj_parameter['human_n'] != 0
Wenn ein menschliches Gesicht erkannt wird, erhalte die Koordinaten (
coordinate_x
undcoordinate_y
) des erkannten Gesichts.Berechne neue Schwenk- und Neigewinkel (
x_angle
undy_angle
) basierend auf der Position des erkannten Gesichts und passe sie an, um dem Gesicht zu folgen.Begrenze die Schwenk- und Neigewinkel innerhalb des angegebenen Bereichs mithilfe der
clamp_number
-Funktion.Stelle die Schwenk- und Neigewinkel der Kamera mit
px.set_cam_pan_angle()
undpx.set_cam_tilt_angle()
ein.