terça-feira, 26 de novembro de 2024

MILK-V DUO 256 - LENDO IMAGEM COM OPENCV E RECONHECENDO ATÉ 80 OBJETOS COM YOLOV5 - CHAMADAS COM VISUINO

 

OPENCV-MOBILE

Opencv-mobile é uma versão leve da biblioteca OpenCV que minimiza a compilação do OpenCV ajustando os parâmetros de compilação e removendo certas partes do código-fonte do OpenCV.

O opencv-mobile fornece funcionalidades comumente usadas do OpenCV, como processamento de imagem, operações de matriz e muito mais. Ele permanece sincronizado com a versão upstream e não tem dependências de terceiros. Na maioria dos casos, ele pode substituir perfeitamente o OpenCV oficial com apenas 1/10 do tamanho, tornando-o particularmente adequado para ambientes móveis e incorporados com requisitos de tamanho específicos.

O opencv-mobile já suporta decodificação JPG acelerada por hardware e aceleração de hardware VPSS (Video Processing Subsystem) no Milk-V Duo/Duo256M/DuoS.

Ver blog

https://milk-v.blogspot.com/2024/11/milkv-duo-riscv64-linux-musl-hw-jpg.html

Foi compilado a seguinte aplicação para o OPENCV

#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <unistd.h> // sleep() int main() { cv::VideoCapture cap; cap.set(cv::CAP_PROP_FRAME_WIDTH, 480); cap.set(cv::CAP_PROP_FRAME_HEIGHT, 360); cap.open(0); const int w = cap.get(cv::CAP_PROP_FRAME_WIDTH); const int h = cap.get(cv::CAP_PROP_FRAME_HEIGHT); fprintf(stderr, "%d x %d\n", w, h); cv::Mat bgr; cap >> bgr; sleep(1); cap >> bgr; sleep(1); cap.release(); // combine into big image cv::Mat out(h , w , CV_8UC3); bgr.copyTo(out(cv::Rect(0, 0, w, h))); cv::imwrite("out.jpg", out); return 0; }

A mesma foi transferida para o Duo 256

  • Usa cv::VideoCapture para abrir a câmera e definir a resolução para 320x240
  • Obtem 1 quadro de imagem a cada 1 segundo
  • Desliga a câmera
  • Por fim, costura as 9 imagens e salva-as

O primeiro quadro está preto porque o ISP ainda está contando as informações da imagem e é tarde demais para processá-las automaticamente.

YOLOV5

O YOLOv5 é um framework de detecção de objetos de código aberto e de alto desempenho. Ele é baseado em uma arquitetura de rede neural convolucional chamada You Only Look Once (YOLO), que é capaz de detectar objetos em uma imagem em uma única passagem.

Transfira também o programa cvi_sample_detector_yolo_v5_fused_preprocess (TPU-SDK) para o Duo 256 e execute.

./samples/samples_extra/bin/cvi_sample_detector_yolo_v5_fused_preprocess \ ./yolov5n_int8_fuse.cvimodel \ ./out.jpg \ yolov5n_out.jpg



Ver blog

https://milk-v.blogspot.com/2024/10/milk-v-duo-256-yolov-parte-i.html



Detectou Person (Object)

[root@milkv-duo]/mnt/tpu/tpu-sdk# ./opencv-mobile-test opencv-mobile MIPI CSI camera with cvi opencv-mobile HW JPG decoder with cvi ISP Vipipe(0) Allocate pa(0x868a7000) va(0x0x3fd181f000) size(291120) awbInit ver 6.8@2021500 0 R:1400 B:3100 CT:2850 1 R:1500 B:2500 CT:3900 2 R:2300 B:1600 CT:6500 Golden 1024 1024 1024 WB Quadratic:0 isWdr:0 ViPipe:0,===GC2083 1080P 30fps 10bit LINE Init OK!=== binName = /mnt/cfg/param/cvi_sdr_bin ******************************************************************************** cvi_bin_isp message gerritId: 36403 commitId: c69c5863e md5: cab880835a2ad5184de5ed7762404b84 sensorNum 1 sensorName0 2083 PQBIN message gerritId: 80171 commitId: 5c9d8fc5d md5: ba5a510e093ad42db6788e6c2d13169e sensorNum 3 sensorName0 2053 author: wanqiang.he desc: 思博慧CV1812H_GC2083_RGB_mode_V1.0.0 createTime: 2023-08-04 16:48:08version: V1.1 tool Version: v3.0.5.24 mode: ******************************************************************************** sensorName(0) mismatch, mwSns:2083 != pqBinSns:2053 320 x 240 0 R:1165 B:3087 CT:2688 1 R:1464 B:2327 CT:3937 2 R:1974 B:1613 CT:7225 Golden 1464 1024 2327 wdrLEOnly:1 ISP Vipipe(0) Free pa(0x868a7000) va(0x0x3fd181f000) gc2083_standby [root@milkv-duo]/mnt/tpu/tpu-sdk# ./samples/samples_extra/bin/cvi_sample_detector_yolo_v5_fused_preprocess \ > ./yolov5n_int8_fuse.cvimodel \ > ./out.jpg \ > yolov5n_out.jpg version: 1.4.0 yolov5n Build at 2024-11-19 08:56:04 For platform cv181x Max SharedMem size:2457600 CVI_NN_RegisterModel succeeded get detection num: 1 obj 0: [158.944382 142.148956 232.148819 202.896820] score:0.716248 cls:person ------ 1 objects are detected ------
CVI_NN_CleanupModel succeeded




dica
  • A câmera precisa estar conectada antes que o Duo seja ligado
  • Quando o comando é executado, a direção da câmera pode ser girada para capturar imagens diferentes até que o programa termine

O Visuino é o mais recente software inovador da Mitov Software. Um ambiente de programação visual que permite programar suas placas Arduino.

A SMARTCORE FORNECE CHIPS E MÓDULOS PARA IOT, COMUNICAÇÃO WIRELESS, BIOMETRIA, CONECTIVIDADE, RASTREAMENTO E AUTOMAÇÃO. NOSSO PORTFÓLIO INCLUI MODEM 2G/3G/4G/NB-IOT, SATELITAL, MÓDULOS WIFI, BLUETOOTH, GPS, SIGFOX, LORA, LEITOR DE CARTÃO, LEITOR QR CCODE, MECANISMO DE IMPRESSÃO, MINI-BOARD PC, ANTENA, PIGTAIL, BATERIA, REPETIDOR GPS E SENSORES.


Nenhum comentário:

Postar um comentário