🛠 Diffuser des images JPEG depuis le Nicla Vision

Arduino Nicla Vision · intermediaire · Schéma : IMG-nicla-vision-intermediaire-2-niclavision-streaming-jpeg.svg — chaîne de diffusion : caméra GC2145, conversion RGB565 vers JPEG sur le PC hôte, navigateur affichant une image JPEG

Objetivos

Transformar las capturas QVGA del Nicla Vision en imágenes JPEG utilizables: ya sea mediante codificación de software integrada o (recomendado) transmitiendo el RGB565 sin procesar y codificando el JPEG en el PC anfitrión.

Material

Código completo

// Trame RGB565 + en-tete binaire pour que l'hote encode le JPEG
// Hote Python : numpy + Pillow -> Image.frombytes("RGB", (320,240), data)
#include "camera.h"
#include "gc2145.h"

GC2145 galaxyCore;
Camera cam(galaxyCore);
FrameBuffer fb;
const uint8_t MAGIC[4] = {0xAA, 0x55, 0x01, 0x01}; // magic+version

void setup {
  Serial.begin(2000000);
  if (!cam.begin(CAMERA_R320x240, CAMERA_RGB565, 15)) { // 15 FPS = marge USB
    pinMode(LED_BUILTIN, OUTPUT);
    while (true) { digitalWrite(LED_BUILTIN, LOW); delay(100);
                   digitalWrite(LED_BUILTIN, HIGH); delay(100); }
  }
}

void loop {
  if (cam.grabFrame(fb, 3000) != 0) return;
  Serial.write(MAGIC, 4);                        // synchronisation trame
  Serial.write(fb.getBuffer, cam.frameSize); // 320*240*2 = 153600 o
}

En el lado del anfitrión, leer 4 bytes de magic, luego 153600 bytes, convertir RGB565 → RGB888, y img.save("frame.jpg", quality=85) para obtener un JPEG.

Verificación esperada

El script del anfitrión escribe ~15 JPEG/s en una carpeta o los sirve en un puerto HTTP; las imágenes son nítidas en QVGA. Si faltan tramas, reducir los FPS de la cámara antes de tocar el caudal serie.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales