Usando la CameraServer
Capturando marcos de CameraServer
La imagen WPILibPi viene con todas las bibliotecas necesarias para crear su propio sistema de procesamiento de visión. Para obtener el fotograma actual de la cámara, puede utilizar la biblioteca CameraServer. Para obtener información sobre CameraServer, consulte Vídeo de Lectura y Procesamiento: Clase de CameraServer.
from cscore import CameraServer
import cv2
import numpy as np
CameraServer.enableLogging()
camera = CameraServer.startAutomaticCapture()
camera.setResolution(width, height)
sink = cs.getVideo()
while True:
time, input_img = cvSink.grabFrame(input_img)
if time == 0: # There is an error
continue
Nota
OpenCV reads in the image as BGR, not RGB for historical reasons. Use cv2.cvtColor
if you want to change it to RGB.
A continuación se muestra un ejemplo de una imagen que podría capturarse desde CameraServer.
Envío de marcos a CameraServer
A veces, es posible que desee enviar fotogramas de video procesados a la instancia de CameraServer para fines de depuración o para ver en una aplicación del dashboard como Shuffleboard.
#
# CameraServer initialization code here
#
output = cs.putVideo("Name", width, height)
while True:
time, input_img = cvSink.grabFrame(input_img)
if time == 0: # There is an error
output.notifyError(sink.getError())
continue
#
# Insert processing code here
#
output.putFrame(processed_img)
Como ejemplo, el código de procesamiento podría delinear el objetivo en rojo y mostrar las esquinas en amarillo para fines de depuración.
A continuación se muestra un ejemplo de una imagen completamente procesada que se enviaría de vuelta a CameraServer y se muestra en la computadora Driver Station.