vision beginner

La cámara USB de 35€ que corre YOLO a 30fps en una Raspberry Pi 5

Arducam 16MP USB con MJPEG hardware. Elimina el cuello de botella de CPU en pipelines de visión y lleva YOLO a 30fps en una Raspberry Pi 5.

ver producto ~35€

Un maker publicó en Hackaday un pipeline de detección de objetos en tiempo real corriendo en una Raspberry Pi 5 con YOLOv8n — 30fps estables. La clave no era el modelo ni la Pi: era la cámara. La Arducam 16MP con compresión MJPEG por hardware liberaba la CPU para la inferencia.

Qué es exactamente

La Arducam 16MP USB es una cámara con sensor Sony IMX519, el mismo sensor que usa el módulo oficial de Raspberry Pi Camera 3. La diferencia crítica: incluye un chip de compresión MJPEG por hardware que codifica los frames antes de enviarlos por USB.

Specs relevantes:

  • Sony IMX519 — 16MP, autofocus, buena sensibilidad en condiciones de baja luz
  • Compresión MJPEG hardware — los frames llegan comprimidos, la CPU no tiene que hacer nada
  • USB 3.0 — ancho de banda suficiente para 1080p a 60fps o 4K a 15fps en MJPEG
  • Driver V4L2 — compatible con Linux, RaspberryPi OS, y cualquier sistema basado en V4L2
  • Sin configuración — plug and play con OpenCV

Por qué nos interesa

En pipelines de visión por computador, el cuello de botella suele estar en la captura y decodificación de frames, no en la inferencia. Una cámara que comprime por hardware y entrega frames listos para procesar libera ciclos de CPU que el modelo de detección puede aprovechar.

Con YOLOv8 en una Pi 5:

import cv2
from ultralytics import YOLO

model = YOLO('yolov8n.pt')  # nano — el más rápido para tiempo real

# La cámara aparece como /dev/video0 con V4L2
cap = cv2.VideoCapture(0, cv2.CAP_V4L2)
cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc(*'MJPG'))
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
cap.set(cv2.CAP_PROP_FPS, 30)

while True:
    ret, frame = cap.read()
    if not ret:
        break
    results = model(frame, stream=True, verbose=False)
    for r in results:
        annotated = r.plot()
        cv2.imshow('Detection', annotated)
    if cv2.waitKey(1) == ord('q'):
        break

Cómo empezar

En Raspberry Pi OS, la cámara funciona directamente tras conectarla por USB. Para verificar que la detecta el sistema:

v4l2-ctl --list-devices
# Debería aparecer: Arducam: USB Camera (usb-...)

Para instalar YOLOv8:

pip install ultralytics

Lo que no te van a contar

El autofocus de la IMX519 tiene latencia — si tu caso de uso requiere detección de objetos en movimiento rápido, puede causar frames desenfocados. Para escenas estáticas o de movimiento lento es perfecto. El cable USB incluido es bastante corto — probablemente necesitas uno de 2 metros para posicionar la cámara donde quieras.

Veredicto

Para un pipeline de visión por computador en Raspberry Pi o cualquier SBC con USB 3.0, la Arducam 16MP es la compra más eficiente del mercado en 2026. 35€ por MJPEG hardware y sensor Sony no tiene competencia en ese rango de precio.