Source code for wpilib._impl.dummycamera

import threading

__all__ = ["USBCamera", "CameraServer"]

[docs]class USBCamera: kDefaultCameraName = b"cam0"
[docs] class WhiteBalance: kFixedIndoor = 3000 kFixedOutdoor1 = 4000 kFixedOutdoor2 = 5000 kFixedFluorescent1 = 5100 kFixedFlourescent2 = 5200
def __init__(self, name=None): if name is None: name = USBCamera.kDefaultCameraName self.name = name self.id = None self.active = False self.useJpeg = True self.mutex = threading.RLock() self.width = 320 self.height = 240 self.fps = 30 self.whiteBalance = "auto" self.whiteBalanceValue = None self.exposure = "auto" self.exposureValue = None self.brightness = 50 self.needSettingsUpdate = True self.openCamera()
[docs] def openCamera(self): pass
[docs] def closeCamera(self): pass
[docs] def startCapture(self): self.active = True
[docs] def stopCapture(self): self.active = False
[docs] def updateSettings(self): pass
[docs] def setFPS(self, fps): with self.mutex: if fps != self.fps: self.needSettingsUpdate = True self.fps = fps
[docs] def setSize(self, width, height): with self.mutex: if width != self.width or height != self.height: self.needSettingsUpdate = True self.width = width self.height = height
[docs] def setBrightness(self, brightness): """Set the brightness, as a percentage (0-100). """ with self.mutex: if brightness > 100: self.brightness = 100 elif brightness < 0: self.brightness = 0 else: self.brightness = brightness self.needSettingsUpdate = True
[docs] def getBrightness(self): """Get the brightness, as a percentage (0-100). """ with self.mutex: return self.brightness
[docs] def setWhiteBalanceAuto(self): """Set the white balance to auto. """ with self.mutex: self.whiteBalance = "auto" self.whiteBalanceValue = None self.needSettingsUpdate = True
[docs] def setWhiteBalanceHoldCurrent(self): """Set the white balance to hold current. """ with self.mutex: self.whiteBalance = "manual" self.whiteBalanceValue = None self.needSettingsUpdate = True
[docs] def setWhiteBalanceManual(self, value): """Set the white balance to manual, with specified color temperature. """ with self.mutex: self.whiteBalance = "manual" self.whiteBalanceValue = value self.needSettingsUpdate = True
[docs] def setExposureAuto(self): """Set the exposure to auto aperature. """ with self.mutex: self.exposure = "auto" self.exposureValue = None self.needSettingsUpdate = True
[docs] def setExposureHoldCurrent(self): """Set the exposure to hold current. """ with self.mutex: self.exposure = "manual" self.exposureValue = None self.needSettingsUpdate = True
[docs] def setExposureManual(self, value): """Set the exposure to manual, as a percentage (0-100). """ with self.mutex: self.exposure = "manual" if value > 100: self.exposureValue = 100 elif value < 0: self.exposureValue = 0 else: self.exposureValue = value self.needSettingsUpdate = True
[docs] def getImage(self, image): with self.mutex: if self.needSettingsUpdate or self.useJpeg: self.needSettingsUpdate = False self.useJpeg = False self.updateSettings() raise NotImplementedError
[docs] def getImageData(self, data, maxsize): with self.mutex: if self.needSettingsUpdate or not self.useJpeg: self.needSettingsUpdate = False self.useJpeg = True self.updateSettings() return 0
[docs]class CameraServer: kPort = 1180 kSize640x480 = 0 kSize320x240 = 1 kSize160x120 = 2 server = None @staticmethod
[docs] def getInstance(): if CameraServer.server is None: CameraServer.server = CameraServer() return CameraServer.server
def __init__(self): self.mutex = threading.RLock() self.ready = threading.Event() self.quality = 50 self.camera = None
[docs] def setImage(self, image): pass
[docs] def startAutomaticCapture(self, camera): """Start automatically capturing images to send to the dashboard. You should call this method to just see a camera feed on the dashboard without doing any vision processing on the roboRIO. {@link #setImage} shouldn't be called after this is called. :param camera: The camera interface (e.g. a USBCamera instance) """ if self.camera is not None: return self.camera = camera self.camera.startCapture()
[docs] def isAutoCaptureStarted(self): """check if auto capture is started """ with self.mutex: return self.camera is not None
[docs] def setSize(self, size): if size == self.kSize160x120: self.camera.setSize(160, 120) elif size == self.kSize320x240: self.camera.setSize(320, 240) elif size == self.kSize640x480: self.camera.setSize(640, 480) else: return
[docs] def setQuality(self, quality): """Set the quality of the compressed image sent to the dashboard :param quality: The quality of the JPEG image, from 0 to 100 """ with self.mutex: if quality > 100: self.quality = 100 elif quality < 0: self.quality = 0 else: self.quality = quality
[docs] def getQuality(self): """Get the quality of the compressed image sent to the dashboard :returns: The quality, from 0 to 100 """ with self.mutex: return self.quality