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.
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.