Detecção de objetos em tempo real com YOLO usando reCamera baseada em Cpp
Este documento demonstra como implementar captura de fotos em tempo real, detecção de objetos com YOLO e acesso aos resultados via HTTP com C++ baseado em compilação cruzada em terminais reCamera. Esta abordagem evita problemas de superaquecimento encontrados ao usar Node-RED na reCamera. Você pode consultar este documento para modificar o código em C++ para aplicações personalizadas de visão computacional.
Preparação do Ambiente
Pré-compilação
Primeiro, você precisa consultar o documento "Develop with C/C++" para configurar o ambiente de compilação cruzada no seu Linux. Observação: Reconfigure o caminho após cada inicialização:
export SG200X_SDK_PATH=$HOME/recamera/sg2002_recamera_emmc/
export PATH=$HOME/recamera/host-tools/gcc/riscv64-linux-musl-x86_64/bin:$PATH
Em seguida, faça o download do projeto Realtime_detection_http e compile-o.
cd Realtime_detection_http/
mkdir build && cd build
cmake ..
make
A presença do arquivo executável verde Realtime_detection_http no diretório de build indica compilação bem-sucedida:

Em seguida, abra o terminal da reCamera e copie o arquivo executável para o diretório do terminal reCamera.
sudo scp Realtime_detection_http [email protected]:/home/recamera/
Preparação da reCamera
1.Faça o download do YOLOv11 que já foi implantado em On Device Models e copie o arquivo .cvimodel do modelo para o terminal da sua reCamera: /home/recamera/. 2.Antes de executar o código, acesse o workspace da reCamera para encerrar o processo (consulte Develop with c/c++) a fim de evitar consumo de memória. 3.Em seguida, navegue até /etc/init.d/, copie as pastas S93sscma-supervisor e S91sscma-node para /home/recamera/ ou outro local para backup, e exclua as pastas originais S93sscma-supervisor e S91sscma-node para evitar consumo de memória e ocupação do 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
Executar o programa
Execute o programa como administrador em /home/recamera/ no terminal da reCamera:
sudo ./Realtime_detection_http
Resultados
O terminal exibirá o seguinte, indicando operação normal do programa:

Você pode acessar http://192.168.42.1/modeldetector via navegador ou Postman. A reCamera irá capturar uma foto imediatamente e retornar os objetos detectados pelo YOLOv11. Navegador:

Postman:

As informações retornadas incluem os seguintes dados:
- Code:1 (Em execução)
- Msg: Mensagens de erro
- Initialize_camera_duration: A duração da inicialização da câmera é exibida apenas durante o primeiro acesso.
- Initialize_model_duration: A duração da inicialização do modelo é exibida apenas durante o primeiro acesso.
- Data:
- Score: Pontuação de confiança da detecção (0-1)
- Target: Nome do objeto detectado
- Box:[x1, y1, x2, y2]: Coordenadas da caixa de detecção (em pixels representando as bordas [esquerda, superior, direita, inferior])
- Center:[x, y]: Posição central normalizada da caixa de detecção (proporção em relação à largura/altura da imagem)
- Size:[w, h]: Largura e altura normalizadas da caixa de detecção (proporção em relação às dimensões da imagem)
- Release_duration: Tempo gasto para limpar o cache da câmera (ms)
- Capture_duration: Duração da aquisição da imagem (ms)
- Image_preprocessing_duration: Duração da preparação da imagem antes da inferência (ms)
- Detection_duration: Duração da detecção do modelo (ms) (Incluindo Preprocessing, Inference, Postprocessing)
- Duration: Tempo total de execução do programa (ms)
- Timestamp: Carimbo de data/hora Unix
O terminal exibirá:
- Parâmetros de inicialização da câmera:
- Resolução: 1920×1080
- Taxa de quadros: 5 fps
- Canal de captura: Canal 2
- Tamanho da imagem capturada (por exemplo, Jpeg size: 216149 (pixels))
- Uso de memória (MB) durante diferentes etapas:
- Pré-captura (Memory usage)
- Liberação (Memory usage_during_)
- Pós-captura (Memory usage_after)
- Após o pré-processamento da imagem (Memory usage_before_model)
- Após a detecção do modelo (Memory usage_after_model)
- Duração da detecção do modelo (ms)
- Pré-processamento (por exemplo, pre: 9ms)
- Inferência (por exemplo, infer: 40ms)
- Pós-processamento (por exemplo, post:395ms)


No terminal da reCamera, as imagens detectadas podem ser salvas automaticamente:

Você pode acessá-la continuamente com o seu dispositivo para obter resultados de detecção em tempo real para aplicações como segurança inteligente e vigilância.
Você pode modificar o formato da mensagem retornada em registerModelDetector() (Realtime_detection_http/src/http.cpp) e model_detector() (Realtime_detection_http/src/model_detector.cpp). Você também pode usar o seu próprio modelo implantado ao chamar initialize_model(const std::string& model_path) em registerModelDetector(), e modificar as configurações de inicialização da câmera em initialize_camera()(Realtime_detection_http/src/model_detector.cpp):

Após a detecção, você pode pressionar Ctrl+C para encerrar a operação.O programa irá parar a câmera.

Para mais detalhes, consulte nosso repositório GitHub.
Suporte Técnico & Discussão sobre o Produto
Agradecemos por escolher nossos produtos! Estamos aqui para oferecer diferentes formas de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.