8 #ifndef CSCORE_CSCORE_OO_H_
9 #define CSCORE_CSCORE_OO_H_
11 #include <initializer_list>
16 #include "cscore_cpp.h"
48 kBoolean = CS_PROP_BOOLEAN,
49 kInteger = CS_PROP_INTEGER,
50 kString = CS_PROP_STRING,
56 std::string GetName()
const;
58 Kind GetKind()
const {
return m_kind; }
60 explicit operator bool()
const {
return m_kind != kNone; }
63 bool IsBoolean()
const {
return m_kind == kBoolean; }
64 bool IsInteger()
const {
return m_kind == kInteger; }
65 bool IsString()
const {
return m_kind == kString; }
66 bool IsEnum()
const {
return m_kind == kEnum; }
73 int GetDefault()
const;
76 std::string GetString()
const;
81 std::vector<std::string> GetChoices()
const;
83 CS_Status GetLastStatus()
const {
return m_status; }
89 mutable CS_Status m_status;
103 kUnknown = CS_SOURCE_UNKNOWN,
104 kUsb = CS_SOURCE_USB,
105 kHttp = CS_SOURCE_HTTP,
131 VideoSource(
const VideoSource& source);
132 VideoSource(VideoSource&& other) noexcept;
133 VideoSource& operator=(VideoSource other) noexcept;
136 explicit operator
bool()
const {
return m_handle != 0; }
138 int GetHandle()
const {
return m_handle; }
140 bool operator==(
const VideoSource& other)
const {
141 return m_handle == other.m_handle;
144 bool operator!=(
const VideoSource& other)
const {
return !(*
this == other); }
228 bool SetVideoMode(VideoMode::PixelFormat pixelFormat,
int width,
int height,
329 CS_Status GetLastStatus()
const {
return m_status; }
345 friend void swap(VideoSource& first, VideoSource& second) noexcept {
347 swap(first.m_status, second.m_status);
348 swap(first.m_handle, second.m_handle);
352 explicit VideoSource(CS_Source handle) : m_handle(handle) {}
354 mutable CS_Status m_status = 0;
365 kFixedOutdoor1 = 4000,
366 kFixedOutdoor2 = 5000,
367 kFixedFluorescent1 = 5100,
368 kFixedFlourescent2 = 5200
470 enum HttpCameraKind {
471 kUnknown = CS_HTTP_UNKNOWN,
472 kMJPGStreamer = CS_HTTP_MJPGSTREAMER,
473 kCSCore = CS_HTTP_CSCORE,
485 HttpCameraKind kind = kUnknown);
495 HttpCameraKind kind = kUnknown);
505 HttpCameraKind kind = kUnknown);
515 HttpCameraKind kind = kUnknown);
524 template <
typename T>
526 HttpCameraKind kind = kUnknown);
544 template <
typename T>
545 void SetUrls(std::initializer_list<T> urls);
550 std::vector<std::string>
GetUrls()
const;
557 static std::string HostToUrl(
const wpi::Twine& host);
559 template <
typename T>
560 static std::vector<std::string> HostToUrl(std::initializer_list<T> hosts);
615 template <
typename T>
644 int width,
int height,
int fps);
690 int minimum,
int maximum,
int step,
691 int defaultValue,
int value);
705 int maximum,
int step,
int defaultValue,
745 template <
typename T>
747 std::initializer_list<T> choices);
759 kUnknown = CS_SINK_UNKNOWN,
760 kMjpeg = CS_SINK_MJPEG,
770 explicit operator bool()
const {
return m_handle != 0; }
772 int GetHandle()
const {
return m_handle; }
774 bool operator==(
const VideoSink& other)
const {
775 return m_handle == other.m_handle;
778 bool operator!=(
const VideoSink& other)
const {
return !(*
this == other); }
878 CS_Status GetLastStatus()
const {
return m_status; }
889 swap(first.m_status, second.m_status);
890 swap(first.m_handle, second.m_handle);
894 explicit VideoSink(CS_Sink handle) : m_handle(handle) {}
896 mutable CS_Status m_status = 0;
1011 std::function<
void(uint64_t time)> processFrame);
1029 uint64_t
GrabFrame(cv::Mat& image,
double timeout = 0.225)
const;
1095 int eventMask,
bool immediateNotify);
1105 swap(first.m_handle, second.m_handle);
1109 CS_Listener m_handle;
1116 #include "cscore_oo.inl"
1118 #endif // CSCORE_CSCORE_OO_H_
int GetPort() const
Get the port number of the server.
Definition: cscore_oo.inl:549
void SetWhiteBalanceManual(int value)
Set the white balance to manual, with specified color temperature.
Definition: cscore_oo.inl:225
void SetFPS(int fps)
Set the stream frames per second (FPS) for clients that don't specify it.
Definition: cscore_oo.inl:561
CameraServer (cscore) namespace.
Definition: cscore_oo.inl:11
VideoSource GetSource() const
Get the connected source.
Definition: cscore_oo.inl:513
void SetCompression(int quality)
Set the compression for clients that don't specify it.
Definition: cscore_oo.inl:566
void SetDescription(const wpi::Twine &description)
Set source description.
Definition: cscore_oo.inl:406
wpi::json GetConfigJsonObject() const
Get a JSON configuration object.
void SetSource(VideoSource source)
Configure which source should provide frames to this sink.
Definition: cscore_oo.inl:505
A source for video that provides a sequence of frames.
Definition: cscore_oo.h:97
Try to keep the connection open regardless of whether any sinks are connected.
Definition: cscore_c.h:194
VideoSink GetSink() const
Get the sink associated with the event (if any).
Definition: cscore_oo.inl:617
A sink for video that accepts a sequence of frames.
Definition: cscore_oo.h:753
void SetEnumPropertyChoices(const VideoProperty &property, wpi::ArrayRef< std::string > choices)
Configure enum property choices.
Definition: cscore_oo.inl:452
ConnectionStrategy
Connection strategy.
Definition: cscore_oo.h:110
VideoProperty GetSourceProperty(const wpi::Twine &name)
Get a property of the associated source.
Definition: cscore_oo.inl:519
void SetExposureHoldCurrent()
Set the exposure to hold current.
Definition: cscore_oo.inl:235
std::vector< VideoMode > EnumerateVideoModes() const
Enumerate all known video modes for this source.
Definition: cscore_oo.inl:200
std::vector< VideoProperty > EnumerateProperties() const
Enumerate all properties of this sink.
An event generated by the library and provided to event listeners.
Definition: cscore_oo.h:1060
HttpCamera(const wpi::Twine &name, const wpi::Twine &url, HttpCameraKind kind=kUnknown)
Create a source for a MJPEG-over-HTTP (IP) camera.
Definition: cscore_oo.inl:274
VideoProperty GetProperty(const wpi::Twine &name)
Get a property of the sink.
Definition: cscore_oo.inl:500
bool IsConnected() const
Is the source currently connected to whatever is providing the images?
Definition: cscore_oo.inl:126
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
Definition: ArrayRef.h:41
Listener event.
Definition: cscore_cpp.h:96
std::vector< std::string > GetUrls() const
Get the URLs used to connect to the camera.
Definition: cscore_oo.inl:332
A source that represents a USB camera.
Definition: cscore_oo.h:420
AxisCamera(const wpi::Twine &name, const wpi::Twine &host)
Create a source for an Axis IP camera.
Definition: cscore_oo.inl:360
An event listener.
Definition: cscore_oo.h:1082
uint64_t GrabFrame(cv::Mat &image, double timeout=0.225) const
Wait for the next frame and get the image.
Definition: cscore_oo.inl:592
VideoProperty CreateIntegerProperty(const wpi::Twine &name, int minimum, int maximum, int step, int defaultValue, int value)
Create an integer property.
Definition: cscore_oo.inl:422
A source that represents a MJPEG-over-HTTP (IP) camera.
Definition: cscore_oo.h:468
std::vector< VideoProperty > EnumerateProperties() const
Enumerate all properties of this source.
HttpCameraKind GetHttpCameraKind() const
Get the kind of HTTP camera.
Definition: cscore_oo.inl:312
void SetExposureManual(int value)
Set the exposure to manual, as a percentage (0-100).
Definition: cscore_oo.inl:240
double GetActualFPS() const
Get the actual FPS.
Definition: cscore_oo.inl:188
void SetDescription(const wpi::Twine &description)
Set sink description.
Definition: cscore_oo.inl:587
bool SetConfigJson(wpi::StringRef config)
Set video mode and properties from a JSON configuration string.
Definition: cscore_oo.inl:173
bool IsEnabled() const
Gets source enable status.
Definition: cscore_oo.inl:131
std::string GetName() const
Get the name of the sink.
Definition: cscore_oo.inl:490
Never open the connection.
Definition: cscore_c.h:200
Automatically connect or disconnect based on whether any sinks are connected to this source...
Definition: cscore_oo.h:115
uint64_t GrabFrameNoTimeout(cv::Mat &image) const
Wait for the next frame and get the image.
Definition: cscore_oo.inl:597
A source or sink property.
Definition: cscore_oo.h:39
Kind GetKind() const
Get the kind of the source.
Definition: cscore_oo.inl:99
Automatically connect or disconnect based on whether any sinks are connected to this source...
Definition: cscore_c.h:188
std::string GetDescription() const
Get the source description.
Definition: cscore_oo.inl:109
std::string GetName() const
Get the name of the source.
Definition: cscore_oo.inl:104
bool SetFPS(int fps)
Set the frames per second (FPS).
Definition: cscore_oo.inl:168
std::string GetError() const
Get error string.
Definition: cscore_oo.inl:602
void SetConnectionStrategy(ConnectionStrategy strategy)
Sets the connection strategy.
Definition: cscore_oo.inl:119
static std::vector< VideoSink > EnumerateSinks()
Enumerate all existing sinks.
std::vector< VideoSink > EnumerateSinks()
Enumerate all sinks connected to this source.
void SetResolution(int width, int height)
Set the stream resolution for clients that don't specify it.
Definition: cscore_oo.inl:554
USB camera information.
Definition: cscore_cpp.h:48
void SetWhiteBalanceHoldCurrent()
Set the white balance to hold current.
Definition: cscore_oo.inl:220
static std::vector< VideoSource > EnumerateSources()
Enumerate all existing sources.
bool SetResolution(int width, int height)
Set the resolution.
Definition: cscore_oo.inl:163
static std::vector< UsbCameraInfo > EnumerateUsbCameras()
Enumerate USB cameras on the local system.
Definition: cscore_oo.inl:253
A source for user code to provide OpenCV images as video frames.
Definition: cscore_oo.h:622
VideoProperty CreateStringProperty(const wpi::Twine &name, const wpi::Twine &value)
Create a string property.
Definition: cscore_oo.inl:441
void SetUrls(wpi::ArrayRef< std::string > urls)
Change the URLs used to connect to the camera.
Definition: cscore_oo.inl:318
void NotifyError(const wpi::Twine &msg)
Signal sinks that an error has occurred.
Definition: cscore_oo.inl:396
std::string GetConfigJson() const
Get a JSON configuration string.
Definition: cscore_oo.inl:534
void SetDefaultCompression(int quality)
Set the default compression used for non-MJPEG sources.
Definition: cscore_oo.inl:572
std::string GetDescription() const
Get the sink description.
Definition: cscore_oo.inl:495
a class to store JSON values
Definition: json.h:2714
void SetExposureAuto()
Set the exposure to auto aperature.
Definition: cscore_oo.inl:230
bool SetConfigJson(wpi::StringRef config)
Set properties from a JSON configuration string.
Definition: cscore_oo.inl:524
VideoMode GetVideoMode() const
Get the current video mode.
Definition: cscore_oo.inl:141
Try to keep the connection open regardless of whether any sinks are connected.
Definition: cscore_oo.h:121
VideoProperty CreateBooleanProperty(const wpi::Twine &name, bool defaultValue, bool value)
Create a boolean property.
Definition: cscore_oo.inl:432
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:49
MjpegServer(const wpi::Twine &name, int port)
Create a MJPEG-over-HTTP server sink.
Definition: cscore_oo.h:923
std::string GetPath() const
Get the path to the device.
Definition: cscore_oo.inl:258
A source that represents a video camera.
Definition: cscore_oo.h:361
Kind GetKind() const
Get the kind of the sink.
Definition: cscore_oo.inl:485
void SetEnabled(bool enabled)
Enable or disable getting new frames.
Definition: cscore_oo.inl:607
bool SetPixelFormat(VideoMode::PixelFormat pixelFormat)
Set the pixel format.
Definition: cscore_oo.inl:158
VideoProperty GetProperty(const wpi::Twine &name)
Get a property.
Definition: cscore_oo.inl:136
VideoProperty CreateProperty(const wpi::Twine &name, VideoProperty::Kind kind, int minimum, int maximum, int step, int defaultValue, int value)
Create a property.
Definition: cscore_oo.inl:411
VideoSource GetSource() const
Get the source associated with the event (if any).
Definition: cscore_oo.inl:612
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
Definition: Twine.h:79
UsbCameraInfo GetInfo() const
Get the full camera information for the device.
Definition: cscore_oo.inl:263
void PutFrame(cv::Mat &image)
Put an OpenCV image and notify sinks.
Definition: cscore_oo.inl:391
A sink that acts as a MJPEG-over-HTTP network server.
Definition: cscore_oo.h:903
VideoProperty GetProperty() const
Get the property associated with the event (if any).
Definition: cscore_oo.inl:622
void SetConnectVerbose(int level)
Set how verbose the camera connection messages are.
Definition: cscore_oo.inl:268
Never open the connection.
Definition: cscore_oo.h:127
A source that represents an Axis IP camera.
Definition: cscore_oo.h:556
void SetBrightness(int brightness)
Set the brightness, as a percentage (0-100).
Definition: cscore_oo.inl:205
A sink for user code to accept video frames as OpenCV images.
Definition: cscore_oo.h:984
wpi::json GetConfigJsonObject() const
Get a JSON configuration object.
double GetActualDataRate() const
Get the data rate (in bytes per second).
Definition: cscore_oo.inl:194
uint64_t GetLastFrameTime() const
Get the last time a frame was captured.
Definition: cscore_oo.inl:114
std::string GetListenAddress() const
Get the listen address of the server.
Definition: cscore_oo.inl:544
Video mode.
Definition: cscore_cpp.h:62
void SetWhiteBalanceAuto()
Set the white balance to auto.
Definition: cscore_oo.inl:215
void SetConnected(bool connected)
Set source connection status.
Definition: cscore_oo.inl:401
bool SetVideoMode(const VideoMode &mode)
Set the video mode.
Definition: cscore_oo.inl:146
int GetBrightness()
Get the brightness, as a percentage (0-100).
Definition: cscore_oo.inl:210
std::string GetConfigJson() const
Get a JSON configuration string.
Definition: cscore_oo.inl:183