Class CameraServer

java.lang.Object
edu.wpi.first.cameraserver.CameraServer

public final class CameraServer
extends Object
Singleton class for creating and keeping camera servers. Also publishes camera information to NetworkTables.
  • Field Details

  • Method Details

    • startAutomaticCapture

      Start automatically capturing images to send to the dashboard.

      You should call this method to see a camera feed on the dashboard. If you also want to perform vision processing on the roboRIO, use getVideo() to get access to the camera images.

      The first time this overload is called, it calls startAutomaticCapture(int) with device 0, creating a camera named "USB Camera 0". Subsequent calls increment the device number (e.g. 1, 2, etc).

      Returns:
      The USB camera capturing images.
    • startAutomaticCapture

      public static UsbCamera startAutomaticCapture​(int dev)
      Start automatically capturing images to send to the dashboard.

      This overload calls startAutomaticCapture(String, int) with a name of "USB Camera {dev}".

      Parameters:
      dev - The device number of the camera interface
      Returns:
      The USB camera capturing images.
    • startAutomaticCapture

      public static UsbCamera startAutomaticCapture​(String name, int dev)
      Start automatically capturing images to send to the dashboard.
      Parameters:
      name - The name to give the camera
      dev - The device number of the camera interface
      Returns:
      The USB camera capturing images.
    • startAutomaticCapture

      public static UsbCamera startAutomaticCapture​(String name, String path)
      Start automatically capturing images to send to the dashboard.
      Parameters:
      name - The name to give the camera
      path - The device path (e.g. "/dev/video0") of the camera
      Returns:
      The USB camera capturing images.
    • startAutomaticCapture

      public static MjpegServer startAutomaticCapture​(VideoSource camera)
      Start automatically capturing images to send to the dashboard from an existing camera.
      Parameters:
      camera - Camera
      Returns:
      The MJPEG server serving images from the given camera.
    • addAxisCamera

      public static AxisCamera addAxisCamera​(String host)
      Adds an Axis IP camera.

      This overload calls addAxisCamera(String, String) with name "Axis Camera".

      Parameters:
      host - Camera host IP or DNS name (e.g. "10.x.y.11")
      Returns:
      The Axis camera capturing images.
    • addAxisCamera

      public static AxisCamera addAxisCamera​(String[] hosts)
      Adds an Axis IP camera.

      This overload calls addAxisCamera(String, String[]) with name "Axis Camera".

      Parameters:
      hosts - Array of Camera host IPs/DNS names
      Returns:
      The Axis camera capturing images.
    • addAxisCamera

      public static AxisCamera addAxisCamera​(String name, String host)
      Adds an Axis IP camera.
      Parameters:
      name - The name to give the camera
      host - Camera host IP or DNS name (e.g. "10.x.y.11")
      Returns:
      The Axis camera capturing images.
    • addAxisCamera

      public static AxisCamera addAxisCamera​(String name, String[] hosts)
      Adds an Axis IP camera.
      Parameters:
      name - The name to give the camera
      hosts - Array of Camera host IPs/DNS names
      Returns:
      The Axis camera capturing images.
    • addSwitchedCamera

      public static MjpegServer addSwitchedCamera​(String name)
      Adds a virtual camera for switching between two streams. Unlike the other addCamera methods, this returns a VideoSink rather than a VideoSource. Calling setSource() on the returned object can be used to switch the actual source of the stream.
      Parameters:
      name - The name to give the camera
      Returns:
      The MJPEG server serving images from the given camera.
    • getVideo

      public static CvSink getVideo()
      Get OpenCV access to the primary camera feed. This allows you to get images from the camera for image processing on the roboRIO.

      This is only valid to call after a camera feed has been added with startAutomaticCapture() or addServer().

      Returns:
      OpenCV sink for the primary camera feed
    • getVideo

      public static CvSink getVideo​(VideoSource camera)
      Get OpenCV access to the specified camera. This allows you to get images from the camera for image processing on the roboRIO.
      Parameters:
      camera - Camera (e.g. as returned by startAutomaticCapture).
      Returns:
      OpenCV sink for the specified camera
    • getVideo

      public static CvSink getVideo​(String name)
      Get OpenCV access to the specified camera. This allows you to get images from the camera for image processing on the roboRIO.
      Parameters:
      name - Camera name
      Returns:
      OpenCV sink for the specified camera
    • putVideo

      public static CvSource putVideo​(String name, int width, int height)
      Create a MJPEG stream with OpenCV input. This can be called to pass custom annotated images to the dashboard.
      Parameters:
      name - Name to give the stream
      width - Width of the image being sent
      height - Height of the image being sent
      Returns:
      OpenCV source for the MJPEG stream
    • addServer

      public static MjpegServer addServer​(String name)
      Adds a MJPEG server at the next available port.
      Parameters:
      name - Server name
      Returns:
      The MJPEG server
    • addServer

      public static MjpegServer addServer​(String name, int port)
      Adds a MJPEG server.
      Parameters:
      name - Server name
      port - Server port
      Returns:
      The MJPEG server
    • addServer

      public static void addServer​(VideoSink server)
      Adds an already created server.
      Parameters:
      server - Server
    • removeServer

      public static void removeServer​(String name)
      Removes a server by name.
      Parameters:
      name - Server name
    • getServer

      public static VideoSink getServer()
      Get server for the primary camera feed.

      This is only valid to call after a camera feed has been added with startAutomaticCapture() or addServer().

      Returns:
      The server for the primary camera feed
    • getServer

      public static VideoSink getServer​(String name)
      Gets a server by name.
      Parameters:
      name - Server name
      Returns:
      The server
    • addCamera

      public static void addCamera​(VideoSource camera)
      Adds an already created camera.
      Parameters:
      camera - Camera
    • removeCamera

      public static void removeCamera​(String name)
      Removes a camera by name.
      Parameters:
      name - Camera name