Utilisation de la classe CameraServer

Capture de trames à partir de CameraServer

L’image WPILibPi est livrée avec toutes les librairies nécessaires pour faire votre propre système de traitement de la vision. Afin d’obtenir le cadre actuel de la caméra, vous pouvez utiliser la librairie CameraServer. Pour plus d’informations sur CameraServer, consultez Lire et traiter la vidéo: classe 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

Note

OpenCV comprends par défaut le format d’image comme BGR (Bleu,Vert, Rouge), pas RGB (Rouge, Vert, Bleu) pour des raisons historiques. Utilisez cv2.cvtColor si vous souhaitez le changer en RGB.

Vous trouverez ci-dessous un exemple d’image pouvant être récupérée à partir de CameraServer.

Cible du jeu 2020 avec la bande rétroréfléchissante illuminée en vert.

Envoi d’images à CameraServer

Dans certains cas, vous desirez envoyer des images vidéo traitées à CameraServer pour fins de débogage ou d’affichage dans une application de tableau de bord comme 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)

Par exemple, le code de traitement peut décrire la cible en rouge et afficher les coins en jaune à des fins de débogage.

Vous trouverez ci-dessous un exemple d’image entièrement traitée qui serait renvoyée à CameraServer et affichée sur l’ordinateur du poste de pilotage.

Image ci-dessus avec la cible délimitée en rouge par l’algorithme.