Skip to main content

Detección de objetos YOLO en tiempo real usando reCamera basado en Cpp

Este documento demuestra cómo implementar captura de fotos en tiempo real, detección de objetos YOLO y acceso a resultados por HTTP con C++ basado en compilación cruzada en terminales reCamera. Este enfoque evita los problemas de sobrecalentamiento encontrados al usar Node-RED en reCamera. Puedes consultar este documento para modificar el código C++ para aplicaciones de visión por computadora personalizadas.

Preparación del Entorno

Pre-compilación

Primero, necesitas consultar el documento "Develop with C/C++" para configurar el entorno de compilación cruzada en tu linux. Nota: Reconfigura la ruta después de cada arranque:

export SG200X_SDK_PATH=$HOME/recamera/sg2002_recamera_emmc/
export PATH=$HOME/recamera/host-tools/gcc/riscv64-linux-musl-x86_64/bin:$PATH

Luego, descarga el proyecto Realtime_detection_http y compílalo.

cd Realtime_detection_http/
mkdir build && cd build
cmake ..
make

La presencia del archivo ejecutable verde Realtime_detection_http en el directorio de compilación indica una compilación exitosa:

Luego abre la terminal de reCamera, y copia el archivo ejecutable al directorio de la terminal de reCamera.​

 sudo scp Realtime_detection_http [email protected]:/home/recamera/

Preparación de ReCamera

1.Descarga el YOLOv11 que ha sido desplegado desde On Device Models, luego copia el archivo .cvimodel del modelo a tu terminal reCamera:/home/recamera/. 2.Antes de ejecutar el código, por favor accede al espacio de trabajo de reCamera para terminar el proceso (consulta Develop with c/c++) para prevenir el consumo de memoria. 3.Luego navega a /etc/init.d/, copia tanto las carpetas S93sscma-supervisor como S91sscma-node a /home/recamera/ u otra ubicación para respaldo, y elimina las carpetas originales S93sscma-supervisor y S91sscma-node para prevenir el consumo de memoria y la ocupación del programa.​

cd /etc/init.d/
sudo scp S93sscma-supervisor /home/recamera/
sudo scp S91sscma-node /home/recamera/
sudo rm -r S93sscma-supervisor
sudo rm -r S91sscma-node

Ejecutar el programa

Ejecuta el programa como administrador bajo /home/recamera/ en la terminal de reCamera:

sudo ./Realtime_detection_http

Resultados

La terminal muestra lo siguiente, indicando el funcionamiento normal del programa:

Puedes acceder a http://192.168.42.1/modeldetector a través del navegador web o Postman. La reCamera capturará inmediatamente una foto y devolverá los objetos detectados por YOLOv11.​ Navegador:

Postman:

La información devuelta incluye los siguientes datos:​​

  • Code: 1 (Ejecutándose)
  • Msg: Mensajes de error
  • Initialize_camera_duration: La duración de inicialización de la cámara se muestra solo durante el primer acceso.​
  • Initialize_model_duration: La duración de inicialización del modelo se muestra solo durante el primer acceso.​
  • Data:
    • Score: Puntuación de confianza de detección (0-1)
    • Target: Nombre del objeto detectado
    • Box: [x1, y1, x2, y2]​: Coordenadas del cuadro de detección (en píxeles representando los bordes [izquierdo, superior, derecho, inferior])
    • Center: [x, y]​: Posición central normalizada del cuadro de detección (proporción relativa al ancho/alto de la imagen)
    • Size: [w, h]​: Ancho y alto normalizados del cuadro de detección (proporción relativa a las dimensiones de la imagen)
    • Release_duration: Tiempo tomado para limpiar la caché de la cámara (ms)
    • Capture_duration: Duración de adquisición de imagen (ms)
    • Image_preprocessing_duration: Duración de preparación de imagen antes de la inferencia (ms)
    • Detection_duration: Duración de detección del modelo (ms) (Incluyendo Preprocesamiento, Inferencia, Postprocesamiento)
  • Duration: Tiempo total de ejecución del programa (ms)
  • Timestamp: Marca de tiempo Unix

La terminal mostrará:​

  • Parámetros de inicialización de la cámara​:
    • Resolución: 1920×1080
    • Velocidad de fotogramas: 5 fps
    • Canal de captura: Canal 2
  • Tamaño de imagen capturada (ej. Tamaño Jpeg: 216149 (píxeles))
  • ​Uso de memoria (MB) durante diferentes pasos:
    • Pre-captura (Memory usage)
    • Liberando (Memory usage_during_)
    • Post-captura (Memory usage_after)
    • Después del preprocesamiento de imagen (Memory usage_before_model)
    • Después de la detección del modelo (Memory usage_after_model)
  • Duración de detección del modelo (ms)
    • Preprocesamiento (ej.pre: 9ms)
    • Inferencia (ej.infer: 40ms)
    • Postprocesamiento (ej.post:395ms)

En la terminal de reCamera, las imágenes detectadas pueden guardarse automáticamente:​

Puedes acceder continuamente con tu dispositivo para obtener resultados de detección en tiempo real para aplicaciones como seguridad inteligente y vigilancia.

Puedes modificar el formato del mensaje devuelto en registerModelDetector() (Realtime_detection_http/src/http.cpp) y model_detector() (Realtime_detection_http/src/model_detector.cpp). También puedes usar tu propio modelo desplegado al llamar initialize_model(const std::string& model_path) en registerModelDetector(), y modificar la configuración de inicialización de la cámara en initialize_camera()(Realtime_detection_http/src/model_detector.cpp):

Después de la detección, puedes presionar Ctrl+C para terminar la operación.​El programa detendrá la cámara.​

Para más detalles, consulta nuestro repositorio de GitHub.


Soporte Técnico y Discusión de Productos

¡Gracias por elegir nuestros productos! Estamos aquí para brindarte diferentes tipos de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.

Loading Comments...