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, 320); cap.set(cv::CAP_PROP_FRAME_HEIGHT, 240); 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[9]; for (int i = 0; i < 9; i++) { cap >> bgr[i];
sleep(1); }
cap.release();
// combine into big image { cv::Mat out(h * 3, w * 3, CV_8UC3); bgr[0].copyTo(out(cv::Rect(0, 0, w, h))); bgr[1].copyTo(out(cv::Rect(w, 0, w, h))); bgr[2].copyTo(out(cv::Rect(w * 2, 0, w, h))); bgr[3].copyTo(out(cv::Rect(0, h, w, h))); bgr[4].copyTo(out(cv::Rect(w, h, w, h))); bgr[5].copyTo(out(cv::Rect(w * 2, h, w, h))); bgr[6].copyTo(out(cv::Rect(0, h * 2, w, h))); bgr[7].copyTo(out(cv::Rect(w, h * 2, w, h))); bgr[8].copyTo(out(cv::Rect(w * 2, h * 2, w, h)));
cv::imwrite("out.jpg", out); }
return 0;}
#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, 320); cap.set(cv::CAP_PROP_FRAME_HEIGHT, 240); 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[9]; for (int i = 0; i < 9; i++) { cap >> bgr[i];
sleep(1); }
cap.release();
// combine into big image { cv::Mat out(h * 3, w * 3, CV_8UC3); bgr[0].copyTo(out(cv::Rect(0, 0, w, h))); bgr[1].copyTo(out(cv::Rect(w, 0, w, h))); bgr[2].copyTo(out(cv::Rect(w * 2, 0, w, h))); bgr[3].copyTo(out(cv::Rect(0, h, w, h))); bgr[4].copyTo(out(cv::Rect(w, h, w, h))); bgr[5].copyTo(out(cv::Rect(w * 2, h, w, h))); bgr[6].copyTo(out(cv::Rect(0, h * 2, w, h))); bgr[7].copyTo(out(cv::Rect(w, h * 2, w, h))); bgr[8].copyTo(out(cv::Rect(w * 2, h * 2, 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.
Transfira também o programa cvi_sample_detector_yolo_v5_fused_preprocess (TPU-SDK) para o Duo 256 e execute.
Ver blog
https://milk-v.blogspot.com/2024/10/milk-v-duo-256-yolov-parte-i.html
Detectou Person (Object)
- 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
REF
https://milk-v.blogspot.com/2024/10/cam-gc2083-introducao-o-cam-gc2083-e.html
Sobre a SMARTCORE
https://milk-v.blogspot.com/2024/10/cam-gc2083-introducao-o-cam-gc2083-e.html
Sobre a SMARTCORE
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