Nota
¡Hola! Bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook. ¡Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 junto con otros entusiastas!
¿Por qué unirte?
Soporte experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
Aprende y comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.
Preestrenos exclusivos: Obtén acceso anticipado a nuevos anuncios de productos y adelantos.
Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.
Promociones festivas y sorteos: Participa en sorteos y promociones especiales.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [here] y únete hoy.
8. Te Observa
Este proyecto también se basa en el proyecto 7. Visión por Computadora, con la incorporación de algoritmos de detección facial.
Cuando aparezcas frente a la cámara, reconocerá tu rostro y ajustará su soporte para mantener tu cara en el centro de la imagen.
Puedes ver la transmisión en http://<your IP>:9000/mjpg
.
Ejecutar el Código
cd ~/picar-x/example
sudo python3 8.stare_at_you.py
Cuando el código se ejecute, la cámara del coche seguirá enfocando tu rostro.
Código
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']
# ajustar el ángulo del soporte para seguir el rostro
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)
¿Cómo funciona?
Estas líneas de código en el bucle while True
permiten que la cámara siga el rostro.
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']
# ajustar el ángulo del soporte para seguir el rostro
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)
Verifica si se ha detectado un rostro humano.
Vilib.detect_obj_parameter['human_n'] != 0
Si se detecta un rostro, obtén las coordenadas (
coordinate_x
ycoordinate_y
) del rostro detectado.Calcula los nuevos ángulos de paneo e inclinación (
x_angle
yy_angle
) basados en la posición del rostro y ajústalos para seguirlo.Limita los ángulos de paneo e inclinación dentro del rango especificado usando la función
clamp_number
.Configura los ángulos de paneo e inclinación de la cámara utilizando
px.set_cam_pan_angle()
ypx.set_cam_tilt_angle()
.