The Canvas class is the entry point into CanvasCV. More...
#include <canvas.h>
Public Types | |
typedef std::function< void(Shape *)> | CBCanvasShape |
notification on shapes create/modify/delete from this Canvas instance | |
Public Member Functions | |
Canvas (const std::string &winNameVal, cv::Size sizeVal=cv::Size()) | |
Canvas. More... | |
~Canvas () | |
release all shapes and widgets. Shape callbacks are invoked doe delete. | |
void | redrawOn (const cv::Mat &src, cv::Mat &dst) |
redrawOn draws the shapes on dst More... | |
void | redrawOn (cv::Mat &dst) |
redrawOn More... | |
void | setImage (const cv::Mat &img) |
setImage More... | |
bool | onMousePress (const cv::Point &pos) |
You should delegate OpenCV mouse callback events to this method - returns true if did something at pos. | |
void | onMouseRelease (const cv::Point &pos) |
You should delegate OpenCV mouse callback events to this method. | |
void | onMouseMove (const cv::Point &pos) |
You should delegate OpenCV mouse callback events to this method. | |
std::shared_ptr< Shape > | createShape (std::string type, const cv::Point &pos=cv::Point(0, 0)) |
createShape More... | |
template<class T > | |
std::shared_ptr< T > | createShape (const cv::Point &pos=cv::Point(0, 0)) |
createShape More... | |
std::string | getShapeType () const |
get default shape type to draw More... | |
void | setShapeType (std::string value) |
set default shape type to draw (could be "") More... | |
void | deleteActive () |
delete shape currenty selected | |
void | deleteShape (const std::shared_ptr< Shape > &shape) |
delete specific shape | |
void | deleteWidget (const std::shared_ptr< Widget > &widget) |
delete specific widget | |
void | notifyOnShapeCreate (CBCanvasShape cb) |
used to register for notifications on shape creation More... | |
void | notifyOnShapeModify (CBCanvasShape cb) |
used to register for notifications on shape modification (actually when it is deselected) More... | |
void | notifyOnShapeDelete (CBCanvasShape cb) |
used to register for notifications on shape deletion More... | |
void | clearShapes () |
clear all shapes from Canvas | |
void | clearWidgets () |
clear all widgets from Canvas | |
template<class T > | |
void | getShapes (std::list< std::shared_ptr< T >> &result) |
getShapes of a specific type More... | |
std::shared_ptr< Shape > | getShape (int id) |
getShape More... | |
void | getShapes (const cv::Point &pos, std::list< std::shared_ptr< Shape >> &result) |
getShapes More... | |
void | disableScreenText () |
disable the top left text area for manual user messages | |
void | disableStatusMsg () |
disable the bottom left text area for auto status messages | |
void | enableScreenText (cv::Scalar color=Colors::Black, cv::Scalar bgColor=Colors::LightGray, double scale=Consts::DEFAULT_FONT_SCALE, int thickness=Consts::DEFAULT_FONT_THICKNESS, uchar alpha=80, int fontFace=Consts::DEFAULT_FONT) |
enableScreenText enables the top left text area for manual user messages More... | |
void | enableStatusMsg (cv::Scalar color=Colors::Orange, cv::Scalar bgColor=Colors::LightGray, double scale=Consts::DEFAULT_FONT_SCALE, int thickness=Consts::DEFAULT_FONT_THICKNESS, uchar alpha=80, int fontFace=Consts::DEFAULT_FONT) |
enableStatusMsg enables the bottom left text area for auto status messages More... | |
void | setDefaultStatusMsg (const std::string &msg) |
set the default status message (active widget and shapes will override it) | |
std::string | getDefaultStatusMsg () const |
get the default status message (active widget and shapes will override it) | |
void | setScreenText (const std::string &msg) |
manually set the screen text message. It remains until disabled or changed. | |
void | setSize (const cv::Size &value) |
set the Canvas size to match the cv::Mat we'll use in redrawOn; | |
cv::Size | getSize () |
get the Canvas size | |
virtual void | addWidget (const std::shared_ptr< Widget > &widget) |
adds the widget to this Layout after removing it from it's previous layout | |
virtual std::shared_ptr< Widget > | rmvWidget (const std::shared_ptr< Widget > &widget) |
rmvWidget More... | |
bool | getOn () const |
is redrawOn() on/off? | |
void | setOn (bool value) |
redrawOn will do nothing if value is 'false' | |
void | writeShapesToFile (const std::string &filepath) const |
write all the shapes currently in the Canvas to a file | |
void | readShapesFromFile (const std::string &filepath) |
load all the from a file into the canvas (removing all current shapes in the process) | |
void | setMouseCallback () |
utility method to handle mouse events on the associated window | |
void | imshow (InputArray mat) |
utility method which uses the winName encapsulated in Canvas | |
int | waitKeyEx (int delay=0) |
waitKeyEx More... | |
void | applyTheme (bool applyToCanvasText=false) |
applyTheme More... | |
void | setDirty () |
while waiting for events the Canvas is redrawn only if it is dirty | |
Static Public Member Functions | |
static void | fatal (string errorMsg, int exitStatus) |
fatal More... | |
Additional Inherited Members |
Detailed Description
This is conceptually a canvas layer on top of your frame.
- It can be turned on and off.
- It can show your messages on screen with a semi transparent background.
- You can handle mouse and keyboard events:
- To create/edit/delete shapes on screen for user selections and landmark configuration.
- To handle widgets you put on the screen for user input.
Constructor & Destructor Documentation
canvascv::Canvas::Canvas | ( | const std::string & | winNameVal, |
cv::Size | sizeVal = cv::Size() |
||
) |
This class is associated with an OpenCV window of a certain size.
- Parameters
-
winNameVal is the name of the OpenCV window (it doesn't have to exist yet) sizeVal is the size of the OpenCV window
- See also
- setSize()
Member Function Documentation
void canvascv::Canvas::applyTheme | ( | bool | applyToCanvasText = false | ) |
apply the current theme to all existing widgets and shapes in the canvas
- Parameters
-
applyToCanvasText should be usually false (make it true to affect Status&UserText of Canvas).
std::shared_ptr<Shape> canvascv::Canvas::createShape | ( | std::string | type, |
const cv::Point & | pos = cv::Point(0, 0) |
||
) |
Create shape by name on the canvas directly from code (instead of by the user using the mouse)
- Parameters
-
type name of the Shape pos shape position
- Returns
- This method will return a shared_ptr<T> instance, which you don't have to keep since another one is kept by the Canvas in which the shape is placed. Never use delete on a Shape pointer.
- Examples:
- example_shapes_widgets.cpp.
std::shared_ptr< T > canvascv::Canvas::createShape | ( | const cv::Point & | pos = cv::Point(0,0) | ) |
Create shape by type on the canvas directly from code (instead of by the user using the mouse)
- Parameters
-
pos shape position
void canvascv::Canvas::enableScreenText | ( | cv::Scalar | color = Colors::Black , |
cv::Scalar | bgColor = Colors::LightGray , |
||
double | scale = Consts::DEFAULT_FONT_SCALE , |
||
int | thickness = Consts::DEFAULT_FONT_THICKNESS , |
||
uchar | alpha = 80 , |
||
int | fontFace = Consts::DEFAULT_FONT |
||
) |
During enable of this feature you can overide some default values. It is safe to call this method again just to change display settings.
- Parameters
-
color is font color bgColor is rect bg color scale is font scale thickness is font thickness alpha is the alpha value of the rect bg [0,255] => [transparent,opaque] fontFace is the OpenCV fonr to use
- Examples:
- example_checkboxes.cpp, example_radiobuttons.cpp, and example_shapes_widgets.cpp.
void canvascv::Canvas::enableStatusMsg | ( | cv::Scalar | color = Colors::Orange , |
cv::Scalar | bgColor = Colors::LightGray , |
||
double | scale = Consts::DEFAULT_FONT_SCALE , |
||
int | thickness = Consts::DEFAULT_FONT_THICKNESS , |
||
uchar | alpha = 80 , |
||
int | fontFace = Consts::DEFAULT_FONT |
||
) |
During enable of this feature you can overide some default values. It is safe to call this method again just to change display settings.
- Parameters
-
color is font color bgColor is rect bg color scale is font scale thickness is font thickness alpha is the alpha value of the rect bg [0,255] => [transparent,opaque] fontFace is the OpenCV fonr to use
- Examples:
- example_shapes_widgets.cpp.
|
static |
A more elegant way for your app to exit on failures.
- A dedicated opencv window with a MsgBox wil show your message.
- The error code will be used with _Exit()
- The errorMsg will also be written to the standard error
- Parameters
-
errorMsg will be displayed to the user exitStatus will be used with _Exit()
std::shared_ptr<Shape> canvascv::Canvas::getShape | ( | int | id | ) |
- Parameters
-
id
- Returns
- shape with requested id
void canvascv::Canvas::getShapes | ( | std::list< std::shared_ptr< T >> & | result | ) |
- Parameters
-
result will contain alll shapes of the T on return
- Note
- these are internal shapes used in the canvas, so changing them affects what is drawn on the Canvas.
void canvascv::Canvas::getShapes | ( | const cv::Point & | pos, |
std::list< std::shared_ptr< Shape >> & | result | ||
) |
- Parameters
-
pos is position to search for shapes result is all the shapes at pos
|
inline |
- Returns
- returns the default current shape to create on mouse press
void canvascv::Canvas::notifyOnShapeCreate | ( | CBCanvasShape | cb | ) |
Multiple registrations are allowed.
- Parameters
-
cb to invoke on shape creation
- Examples:
- example_shapes_widgets.cpp.
void canvascv::Canvas::notifyOnShapeDelete | ( | CBCanvasShape | cb | ) |
Multiple registrations are allowed.
- Parameters
-
cb to invoke on shape deletion
void canvascv::Canvas::notifyOnShapeModify | ( | CBCanvasShape | cb | ) |
Multiple registrations are allowed.
- Parameters
-
cb to invoke on shape modification
void canvascv::Canvas::redrawOn | ( | const cv::Mat & | src, |
cv::Mat & | dst | ||
) |
Draws src with shapes and widgets onto dst. src is upgraded to 3 channels if it has 1 channel.
- Parameters
-
src can be also dst, in which case it is drawn on. src is BGR/BGRA/GRAY. dst if different than src, then src is cloned to it and drawn on.
- See also
- setImage
- Examples:
- example_shapes_widgets.cpp.
void canvascv::Canvas::redrawOn | ( | cv::Mat & | dst | ) |
A utility method that uses latest Mat used as 'src' in the redrawOn above. This methos is also used internally in waitKeyEx(0)
- Parameters
-
dst will be used as output.
- See also
- waitKeyEx
|
virtual |
- Parameters
-
widget will be removed from this Layout
- Returns
- filled shared_ptr to removed widget or empty if not found
- Note
- Widgets must be in layouts to be displayed correctly.
Implements canvascv::Layout.
- Examples:
- example_shapes_widgets.cpp.
void canvascv::Canvas::setImage | ( | const cv::Mat & | img | ) |
sets the internal 'latestFrameSrc' used for GUI updates while waitKeyEx(0) is used, or with redrawOn(cv::Mat&)
- Parameters
-
img will be used to setSize and update internal latestFrameSrc
|
inline |
- Parameters
-
value will be the default current shape to create on mouse press
- Examples:
- example_linecrossing.cpp, example_shapes.cpp, and example_shapes_widgets.cpp.
int canvascv::Canvas::waitKeyEx | ( | int | delay = 0 | ) |
utility method to handle key strokes - you get the keystroke if a widget/shape didn't consume it.
- Parameters
-
delay in milliseconds. If delay is 0, then the latest image used as input will be the background for internal updates. If you want to change it from a callback, then use setImage.
- Returns
- the key press or -1 if the timeout reached
- See also
- setImage
- Note
- When using widgets with callback on the same image, the delay should be 0. If you're changing frames or using only the polling API of the widgets, then specify a delay of your choice.
- Examples:
- example_shapes_widgets.cpp.
The documentation for this class was generated from the following file:
- CanvasCV-doxygen/src/canvascv/canvas.h
Generated by 1.8.11