CameraServer’ı kullanma

CameraServer’dan Çerçeveleri Yakalama

WPILibPi görüntüsü, kendi görüntü işleme sisteminizi oluşturmak için gerekli tüm kitaplıklarla birlikte gelir. Geçerli kareyi kameradan almak için CameraServer kitaplığını kullanabilirsiniz. CameraServer hakkında bilgi için : ref: docs / software / vision-processing / Introduction / cameraserver-class: Read and Process Video: CameraServer Class.

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

Not

OpenCV, görüntüde geçmiş nedenlerden dolayı RGB değil BGR olarak okur. RGB olarak değiştirmek istiyorsanız, cv2.cvtColor kullanın.

Aşağıda CameraServer’dan alınabilecek bir görüntü örneği verilmiştir.

2020 game target with the retroreflective tape illuminated green.

CameraServer’a çerçeve gönderme

Bazen, hata ayıklama amacıyla veya Shuffleboard gibi bir pano uygulamasında görüntülemek için işlenmiş video karelerini CameraServer örneğine geri göndermek isteyebilirsiniz.

#
# 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)

Örnek olarak, işleme kodu hedefi kırmızıyla özetleyebilir ve hata ayıklama amacıyla köşeleri sarı olarak gösterebilir.

Aşağıda, CameraServer’a geri gönderilecek ve Driver Station bilgisayarında görüntülenecek tamamen işlenmiş bir görüntü örneği bulunmaktadır.

Image above with the target outlined in red by the algorithm.