WPILibC++  2019.3.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
cs::CvSink Class Reference

A sink for user code to accept video frames as OpenCV images. More...

#include <cscore_oo.h>

Inheritance diagram for cs::CvSink:
cs::VideoSink

Public Member Functions

 CvSink (const wpi::Twine &name)
 Create a sink for accepting OpenCV images. More...
 
 CvSink (const wpi::Twine &name, std::function< void(uint64_t time)> processFrame)
 Create a sink for accepting OpenCV images in a separate thread. More...
 
void SetDescription (const wpi::Twine &description)
 Set sink description. More...
 
uint64_t GrabFrame (cv::Mat &image, double timeout=0.225) const
 Wait for the next frame and get the image. More...
 
uint64_t GrabFrameNoTimeout (cv::Mat &image) const
 Wait for the next frame and get the image. More...
 
std::string GetError () const
 Get error string. More...
 
void SetEnabled (bool enabled)
 Enable or disable getting new frames. More...
 
- Public Member Functions inherited from cs::VideoSink
 VideoSink (const VideoSink &sink)
 
 VideoSink (VideoSink &&sink) noexcept
 
VideoSinkoperator= (VideoSink other) noexcept
 
 operator bool () const
 
int GetHandle () const
 
bool operator== (const VideoSink &other) const
 
bool operator!= (const VideoSink &other) const
 
Kind GetKind () const
 Get the kind of the sink.
 
std::string GetName () const
 Get the name of the sink. More...
 
std::string GetDescription () const
 Get the sink description. More...
 
VideoProperty GetProperty (const wpi::Twine &name)
 Get a property of the sink. More...
 
std::vector< VideoPropertyEnumerateProperties () const
 Enumerate all properties of this sink.
 
bool SetConfigJson (wpi::StringRef config)
 Set properties from a JSON configuration string. More...
 
bool SetConfigJson (const wpi::json &config)
 Set properties from a JSON configuration object. More...
 
std::string GetConfigJson () const
 Get a JSON configuration string. More...
 
wpi::json GetConfigJsonObject () const
 Get a JSON configuration object. More...
 
void SetSource (VideoSource source)
 Configure which source should provide frames to this sink. More...
 
VideoSource GetSource () const
 Get the connected source. More...
 
VideoProperty GetSourceProperty (const wpi::Twine &name)
 Get a property of the associated source. More...
 
CS_Status GetLastStatus () const
 

Additional Inherited Members

- Public Types inherited from cs::VideoSink
enum  Kind { kUnknown = CS_SINK_UNKNOWN, kMjpeg = CS_SINK_MJPEG, kCv = CS_SINK_CV }
 
- Static Public Member Functions inherited from cs::VideoSink
static std::vector< VideoSinkEnumerateSinks ()
 Enumerate all existing sinks. More...
 
- Protected Member Functions inherited from cs::VideoSink
 VideoSink (CS_Sink handle)
 
- Protected Attributes inherited from cs::VideoSink
CS_Status m_status = 0
 
CS_Sink m_handle
 

Detailed Description

A sink for user code to accept video frames as OpenCV images.

Constructor & Destructor Documentation

cs::CvSink::CvSink ( const wpi::Twine name)
inlineexplicit

Create a sink for accepting OpenCV images.

WaitForFrame() must be called on the created sink to get each new image.

Parameters
nameSource name (arbitrary unique identifier)
cs::CvSink::CvSink ( const wpi::Twine name,
std::function< void(uint64_t time)>  processFrame 
)
inline

Create a sink for accepting OpenCV images in a separate thread.

A thread will be created that calls WaitForFrame() and calls the processFrame() callback each time a new frame arrives.

Parameters
nameSource name (arbitrary unique identifier)
processFrameFrame processing function; will be called with a time=0 if an error occurred. processFrame should call GetImage() or GetError() as needed, but should not call (except in very unusual circumstances) WaitForImage().

Member Function Documentation

std::string cs::CvSink::GetError ( ) const
inline

Get error string.

Call this if WaitForFrame() returns 0 to determine what the error is.

uint64_t cs::CvSink::GrabFrame ( cv::Mat &  image,
double  timeout = 0.225 
) const
inline

Wait for the next frame and get the image.

Times out (returning 0) after timeout seconds. The provided image will have three 8-bit channels stored in BGR order.

Returns
Frame time, or 0 on error (call GetError() to obtain the error message); the frame time is in the same time base as wpi::Now(), and is in 1 us increments.
uint64_t cs::CvSink::GrabFrameNoTimeout ( cv::Mat &  image) const
inline

Wait for the next frame and get the image.

May block forever. The provided image will have three 8-bit channels stored in BGR order.

Returns
Frame time, or 0 on error (call GetError() to obtain the error message); the frame time is in the same time base as wpi::Now(), and is in 1 us increments.
void cs::CvSink::SetDescription ( const wpi::Twine description)
inline

Set sink description.

Parameters
descriptionDescription
void cs::CvSink::SetEnabled ( bool  enabled)
inline

Enable or disable getting new frames.

Disabling will cause processFrame (for callback-based CvSinks) to not be called and WaitForFrame() to not return. This can be used to save processor resources when frames are not needed.


The documentation for this class was generated from the following files: