|
|
|
@ -82,42 +82,44 @@ It provides easy interface to: |
|
|
|
|
See below the example used to generate the figure: |
|
|
|
|
@code |
|
|
|
|
int main(int argc, char *argv[]) |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
int value = 50; |
|
|
|
|
int value2 = 0; |
|
|
|
|
|
|
|
|
|
cvNamedWindow("main1",CV_WINDOW_NORMAL); |
|
|
|
|
cvNamedWindow("main2",CV_WINDOW_AUTOSIZE | CV_GUI_NORMAL); |
|
|
|
|
|
|
|
|
|
cvCreateTrackbar( "track1", "main1", &value, 255, NULL);//OK tested
|
|
|
|
|
char* nameb1 = "button1"; |
|
|
|
|
char* nameb2 = "button2"; |
|
|
|
|
cvCreateButton(nameb1,callbackButton,nameb1,CV_CHECKBOX,1); |
|
|
|
|
namedWindow("main1",WINDOW_NORMAL); |
|
|
|
|
namedWindow("main2",WINDOW_AUTOSIZE | CV_GUI_NORMAL); |
|
|
|
|
createTrackbar( "track1", "main1", &value, 255, NULL); |
|
|
|
|
|
|
|
|
|
String nameb1 = "button1"; |
|
|
|
|
String nameb2 = "button2"; |
|
|
|
|
|
|
|
|
|
cvCreateButton(nameb2,callbackButton,nameb2,CV_CHECKBOX,0); |
|
|
|
|
cvCreateTrackbar( "track2", NULL, &value2, 255, NULL); |
|
|
|
|
cvCreateButton("button5",callbackButton1,NULL,CV_RADIOBOX,0); |
|
|
|
|
cvCreateButton("button6",callbackButton2,NULL,CV_RADIOBOX,1); |
|
|
|
|
createButton(nameb1,callbackButton,&nameb1,QT_CHECKBOX,1); |
|
|
|
|
createButton(nameb2,callbackButton,NULL,QT_CHECKBOX,0); |
|
|
|
|
createTrackbar( "track2", NULL, &value2, 255, NULL); |
|
|
|
|
createButton("button5",callbackButton1,NULL,QT_RADIOBOX,0); |
|
|
|
|
createButton("button6",callbackButton2,NULL,QT_RADIOBOX,1); |
|
|
|
|
|
|
|
|
|
cvSetMouseCallback( "main2",on_mouse,NULL ); |
|
|
|
|
setMouseCallback( "main2",on_mouse,NULL ); |
|
|
|
|
|
|
|
|
|
IplImage* img1 = cvLoadImage("files/flower.jpg"); |
|
|
|
|
IplImage* img2 = cvCreateImage(cvGetSize(img1),8,3); |
|
|
|
|
CvCapture* video = cvCaptureFromFile("files/hockey.avi"); |
|
|
|
|
IplImage* img3 = cvCreateImage(cvGetSize(cvQueryFrame(video)),8,3); |
|
|
|
|
Mat img1 = imread("files/flower.jpg"); |
|
|
|
|
VideoCapture video; |
|
|
|
|
video.open("files/hockey.avi"); |
|
|
|
|
|
|
|
|
|
while(cvWaitKey(33) != 27) |
|
|
|
|
Mat img2,img3; |
|
|
|
|
|
|
|
|
|
while( waitKey(33) != 27 ) |
|
|
|
|
{ |
|
|
|
|
cvAddS(img1,cvScalarAll(value),img2); |
|
|
|
|
cvAddS(cvQueryFrame(video),cvScalarAll(value2),img3); |
|
|
|
|
cvShowImage("main1",img2); |
|
|
|
|
cvShowImage("main2",img3); |
|
|
|
|
img1.convertTo(img2,-1,1,value); |
|
|
|
|
video >> img3; |
|
|
|
|
|
|
|
|
|
imshow("main1",img2); |
|
|
|
|
imshow("main2",img3); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
cvDestroyAllWindows(); |
|
|
|
|
cvReleaseImage(&img1); |
|
|
|
|
cvReleaseImage(&img2); |
|
|
|
|
cvReleaseImage(&img3); |
|
|
|
|
cvReleaseCapture(&video); |
|
|
|
|
destroyAllWindows(); |
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
@endcode |
|
|
|
@ -140,7 +142,7 @@ It provides easy interface to: |
|
|
|
|
|
|
|
|
|
cv::Mat image = cv::imread("Assets/sample.jpg"); |
|
|
|
|
cv::Mat converted = cv::Mat(image.rows, image.cols, CV_8UC4); |
|
|
|
|
cvtColor(image, converted, CV_BGR2BGRA); |
|
|
|
|
cv::cvtColor(image, converted, COLOR_BGR2BGRA); |
|
|
|
|
cv::imshow(windowName, converted); // this will create window if it hasn't been created before
|
|
|
|
|
|
|
|
|
|
int state = 42; |
|
|
|
@ -174,79 +176,100 @@ namespace cv |
|
|
|
|
|
|
|
|
|
//! Flags for cv::namedWindow
|
|
|
|
|
enum WindowFlags { |
|
|
|
|
WINDOW_NORMAL = 0x00000000, //!< the user can resize the window (no constraint) / also use to switch a fullscreen window to a normal size
|
|
|
|
|
WINDOW_AUTOSIZE = 0x00000001, //!< the user cannot resize the window, the size is constrainted by the image displayed
|
|
|
|
|
WINDOW_OPENGL = 0x00001000, //!< window with opengl support
|
|
|
|
|
WINDOW_NORMAL = 0x00000000, //!< the user can resize the window (no constraint) / also use to switch a fullscreen window to a normal size.
|
|
|
|
|
WINDOW_AUTOSIZE = 0x00000001, //!< the user cannot resize the window, the size is constrainted by the image displayed.
|
|
|
|
|
WINDOW_OPENGL = 0x00001000, //!< window with opengl support.
|
|
|
|
|
|
|
|
|
|
WINDOW_FULLSCREEN = 1, //!< change the window to fullscreen
|
|
|
|
|
WINDOW_FREERATIO = 0x00000100, //!< the image expends as much as it can (no ratio constraint)
|
|
|
|
|
WINDOW_KEEPRATIO = 0x00000000 //!< the ratio of the image is respected
|
|
|
|
|
WINDOW_FULLSCREEN = 1, //!< change the window to fullscreen.
|
|
|
|
|
WINDOW_FREERATIO = 0x00000100, //!< the image expends as much as it can (no ratio constraint).
|
|
|
|
|
WINDOW_KEEPRATIO = 0x00000000 //!< the ratio of the image is respected.
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
//! Flags for cv::setWindowProperty / cv::getWindowProperty
|
|
|
|
|
enum WindowPropertyFlags { |
|
|
|
|
WND_PROP_FULLSCREEN = 0, //!< fullscreen property (can be WINDOW_NORMAL or WINDOW_FULLSCREEN)
|
|
|
|
|
WND_PROP_AUTOSIZE = 1, //!< autosize property (can be WINDOW_NORMAL or WINDOW_AUTOSIZE)
|
|
|
|
|
WND_PROP_ASPECT_RATIO = 2, //!< window's aspect ration (can be set to WINDOW_FREERATIO or WINDOW_KEEPRATIO);
|
|
|
|
|
WND_PROP_OPENGL = 3 //!< opengl support
|
|
|
|
|
WND_PROP_FULLSCREEN = 0, //!< fullscreen property (can be WINDOW_NORMAL or WINDOW_FULLSCREEN).
|
|
|
|
|
WND_PROP_AUTOSIZE = 1, //!< autosize property (can be WINDOW_NORMAL or WINDOW_AUTOSIZE).
|
|
|
|
|
WND_PROP_ASPECT_RATIO = 2, //!< window's aspect ration (can be set to WINDOW_FREERATIO or WINDOW_KEEPRATIO).
|
|
|
|
|
WND_PROP_OPENGL = 3 //!< opengl support.
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
enum { EVENT_MOUSEMOVE = 0, |
|
|
|
|
EVENT_LBUTTONDOWN = 1, |
|
|
|
|
EVENT_RBUTTONDOWN = 2, |
|
|
|
|
EVENT_MBUTTONDOWN = 3, |
|
|
|
|
EVENT_LBUTTONUP = 4, |
|
|
|
|
EVENT_RBUTTONUP = 5, |
|
|
|
|
EVENT_MBUTTONUP = 6, |
|
|
|
|
EVENT_LBUTTONDBLCLK = 7, |
|
|
|
|
EVENT_RBUTTONDBLCLK = 8, |
|
|
|
|
EVENT_MBUTTONDBLCLK = 9, |
|
|
|
|
EVENT_MOUSEWHEEL = 10, |
|
|
|
|
EVENT_MOUSEHWHEEL = 11 |
|
|
|
|
//! Mouse Events see cv::MouseCallback
|
|
|
|
|
enum MouseEventTypes { |
|
|
|
|
EVENT_MOUSEMOVE = 0, //!< indicates that the mouse pointer has moved over the window.
|
|
|
|
|
EVENT_LBUTTONDOWN = 1, //!< indicates that the left mouse button is pressed.
|
|
|
|
|
EVENT_RBUTTONDOWN = 2, //!< indicates that the right mouse button is pressed.
|
|
|
|
|
EVENT_MBUTTONDOWN = 3, //!< indicates that the middle mouse button is pressed.
|
|
|
|
|
EVENT_LBUTTONUP = 4, //!< indicates that left mouse button is released.
|
|
|
|
|
EVENT_RBUTTONUP = 5, //!< indicates that right mouse button is released.
|
|
|
|
|
EVENT_MBUTTONUP = 6, //!< indicates that middle mouse button is released.
|
|
|
|
|
EVENT_LBUTTONDBLCLK = 7, //!< indicates that left mouse button is double clicked.
|
|
|
|
|
EVENT_RBUTTONDBLCLK = 8, //!< indicates that right mouse button is double clicked.
|
|
|
|
|
EVENT_MBUTTONDBLCLK = 9, //!< indicates that middle mouse button is double clicked.
|
|
|
|
|
EVENT_MOUSEWHEEL = 10,//!< positive and negative values mean forward and backward scrolling, respectively.
|
|
|
|
|
EVENT_MOUSEHWHEEL = 11 //!< positive and negative values mean right and left scrolling, respectively.
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
enum { EVENT_FLAG_LBUTTON = 1, |
|
|
|
|
EVENT_FLAG_RBUTTON = 2, |
|
|
|
|
EVENT_FLAG_MBUTTON = 4, |
|
|
|
|
EVENT_FLAG_CTRLKEY = 8, |
|
|
|
|
EVENT_FLAG_SHIFTKEY = 16, |
|
|
|
|
EVENT_FLAG_ALTKEY = 32 |
|
|
|
|
//! Mouse Event Flags see cv::MouseCallback
|
|
|
|
|
enum MouseEventFlags { |
|
|
|
|
EVENT_FLAG_LBUTTON = 1, //!< indicates that the left mouse button is down.
|
|
|
|
|
EVENT_FLAG_RBUTTON = 2, //!< indicates that the right mouse button is down.
|
|
|
|
|
EVENT_FLAG_MBUTTON = 4, //!< indicates that the middle mouse button is down.
|
|
|
|
|
EVENT_FLAG_CTRLKEY = 8, //!< indicates that CTRL Key is pressed.
|
|
|
|
|
EVENT_FLAG_SHIFTKEY = 16,//!< indicates that SHIFT Key is pressed.
|
|
|
|
|
EVENT_FLAG_ALTKEY = 32 //!< indicates that ALT Key is pressed.
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
//! Qt font weight
|
|
|
|
|
enum QtFontWeights { |
|
|
|
|
QT_FONT_LIGHT = 25, //!< QFont::Light ( Weight of 25 )
|
|
|
|
|
QT_FONT_NORMAL = 50, //!< QFont::Normal ( Weight of 50 )
|
|
|
|
|
QT_FONT_DEMIBOLD = 63, //!< QFont::DemiBold ( Weight of 63 )
|
|
|
|
|
QT_FONT_BOLD = 75, //!< QFont::Bold ( Weight of 75 )
|
|
|
|
|
QT_FONT_BLACK = 87 //!< QFont::Black ( Weight of 87 )
|
|
|
|
|
QT_FONT_LIGHT = 25, //!< Weight of 25
|
|
|
|
|
QT_FONT_NORMAL = 50, //!< Weight of 50
|
|
|
|
|
QT_FONT_DEMIBOLD = 63, //!< Weight of 63
|
|
|
|
|
QT_FONT_BOLD = 75, //!< Weight of 75
|
|
|
|
|
QT_FONT_BLACK = 87 //!< Weight of 87
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
//! Qt font style
|
|
|
|
|
enum QtFontStyles { |
|
|
|
|
QT_STYLE_NORMAL = 0, //!< QFont::StyleNormal
|
|
|
|
|
QT_STYLE_ITALIC = 1, //!< QFont::StyleItalic
|
|
|
|
|
QT_STYLE_OBLIQUE = 2 //!< QFont::StyleOblique
|
|
|
|
|
QT_STYLE_NORMAL = 0, //!< Normal font.
|
|
|
|
|
QT_STYLE_ITALIC = 1, //!< Italic font.
|
|
|
|
|
QT_STYLE_OBLIQUE = 2 //!< Oblique font.
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
//! Qt "button" type
|
|
|
|
|
enum QtButtonTypes { |
|
|
|
|
QT_PUSH_BUTTON = 0, //!< Push button
|
|
|
|
|
QT_CHECKBOX = 1, //!< Checkbox button
|
|
|
|
|
QT_RADIOBOX = 2 //!< Radiobox button
|
|
|
|
|
QT_PUSH_BUTTON = 0, //!< Push button.
|
|
|
|
|
QT_CHECKBOX = 1, //!< Checkbox button.
|
|
|
|
|
QT_RADIOBOX = 2 //!< Radiobox button.
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** @brief Callback function for mouse events. see cv::setMouseCallback
|
|
|
|
|
@param event one of the cv::MouseEventTypes constants. |
|
|
|
|
@param x The x-coordinate of the mouse event. |
|
|
|
|
@param y The y-coordinate of the mouse event. |
|
|
|
|
@param flags one of the cv::MouseEventFlags constants. |
|
|
|
|
@param userdata The optional parameter. |
|
|
|
|
*/ |
|
|
|
|
typedef void (*MouseCallback)(int event, int x, int y, int flags, void* userdata); |
|
|
|
|
|
|
|
|
|
/** @brief Callback function for Trackbar see cv::createTrackbar
|
|
|
|
|
@param pos current position of the specified trackbar. |
|
|
|
|
@param userdata The optional parameter. |
|
|
|
|
*/ |
|
|
|
|
typedef void (*TrackbarCallback)(int pos, void* userdata); |
|
|
|
|
|
|
|
|
|
/** @brief Callback function defined to be called every frame. See cv::setOpenGlDrawCallback
|
|
|
|
|
@param userdata The optional parameter. |
|
|
|
|
*/ |
|
|
|
|
typedef void (*OpenGlDrawCallback)(void* userdata); |
|
|
|
|
|
|
|
|
|
/** @brief Callback function for a button created by cv::createButton
|
|
|
|
|
@param state current state of the button. It could be -1 for a push button, 0 or 1 for a check/radio box button. |
|
|
|
|
@param userdata The optional parameter. |
|
|
|
|
*/ |
|
|
|
|
typedef void (*ButtonCallback)(int state, void* userdata); |
|
|
|
|
|
|
|
|
|
/** @brief Creates a window.
|
|
|
|
|
|
|
|
|
|
@param winname Name of the window in the window caption that may be used as a window identifier. |
|
|
|
|
@param flags Flags of the window. The supported flags are: (cv::WindowFlags) |
|
|
|
|
|
|
|
|
|
The function namedWindow creates a window that can be used as a placeholder for images and |
|
|
|
|
trackbars. Created windows are referred to by their names. |
|
|
|
|
|
|
|
|
@ -267,14 +290,17 @@ Qt backend supports additional flags: |
|
|
|
|
- **CV_GUI_NORMAL or CV_GUI_EXPANDED:** CV_GUI_NORMAL is the old way to draw the window |
|
|
|
|
without statusbar and toolbar, whereas CV_GUI_EXPANDED is a new enhanced GUI. |
|
|
|
|
By default, flags == WINDOW_AUTOSIZE | WINDOW_KEEPRATIO | CV_GUI_EXPANDED |
|
|
|
|
|
|
|
|
|
@param winname Name of the window in the window caption that may be used as a window identifier. |
|
|
|
|
@param flags Flags of the window. The supported flags are: (cv::WindowFlags) |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS_W void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE); |
|
|
|
|
|
|
|
|
|
/** @brief Destroys a window.
|
|
|
|
|
|
|
|
|
|
@param winname Name of the window to be destroyed. |
|
|
|
|
/** @brief Destroys the specified window.
|
|
|
|
|
|
|
|
|
|
The function destroyWindow destroys the window with the given name. |
|
|
|
|
|
|
|
|
|
@param winname Name of the window to be destroyed. |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS_W void destroyWindow(const String& winname); |
|
|
|
|
|
|
|
|
@ -288,8 +314,6 @@ CV_EXPORTS_W int startWindowThread(); |
|
|
|
|
|
|
|
|
|
/** @brief Waits for a pressed key.
|
|
|
|
|
|
|
|
|
|
@param delay Delay in milliseconds. 0 is the special value that means "forever". |
|
|
|
|
|
|
|
|
|
The function waitKey waits for a key event infinitely (when \f$\texttt{delay}\leq 0\f$ ) or for delay |
|
|
|
|
milliseconds, when it is positive. Since the OS has a minimum time between switching threads, the |
|
|
|
|
function will not wait exactly delay ms, it will wait at least delay ms, depending on what else is |
|
|
|
@ -306,16 +330,15 @@ takes care of event processing. |
|
|
|
|
|
|
|
|
|
The function only works if there is at least one HighGUI window created and the window is active. |
|
|
|
|
If there are several HighGUI windows, any of them can be active. |
|
|
|
|
|
|
|
|
|
@param delay Delay in milliseconds. 0 is the special value that means "forever". |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS_W int waitKey(int delay = 0); |
|
|
|
|
|
|
|
|
|
/** @brief Displays an image in the specified window.
|
|
|
|
|
|
|
|
|
|
@param winname Name of the window. |
|
|
|
|
@param mat Image to be shown. |
|
|
|
|
|
|
|
|
|
The function imshow displays an image in the specified window. If the window was created with the |
|
|
|
|
WINDOW_AUTOSIZE flag, the image is shown with its original size, however it is still limited by the screen resolution. |
|
|
|
|
cv::WINDOW_AUTOSIZE flag, the image is shown with its original size, however it is still limited by the screen resolution. |
|
|
|
|
Otherwise, the image is scaled to fit the window. The function may scale the image, depending on its depth: |
|
|
|
|
|
|
|
|
|
- If the image is 8-bit unsigned, it is displayed as is. |
|
|
|
@ -324,77 +347,81 @@ Otherwise, the image is scaled to fit the window. The function may scale the ima |
|
|
|
|
- If the image is 32-bit floating-point, the pixel values are multiplied by 255. That is, the |
|
|
|
|
value range [0,1] is mapped to [0,255]. |
|
|
|
|
|
|
|
|
|
If window was created with OpenGL support, imshow also support ogl::Buffer , ogl::Texture2D and |
|
|
|
|
If window was created with OpenGL support, cv::imshow also support ogl::Buffer , ogl::Texture2D and |
|
|
|
|
cuda::GpuMat as input. |
|
|
|
|
|
|
|
|
|
If the window was not created before this function, it is assumed creating a window with WINDOW_AUTOSIZE. |
|
|
|
|
If the window was not created before this function, it is assumed creating a window with cv::WINDOW_AUTOSIZE. |
|
|
|
|
|
|
|
|
|
If you need to show an image that is bigger than the screen resolution, you will need to call namedWindow("", WINDOW_NORMAL) before the imshow. |
|
|
|
|
|
|
|
|
|
@note This function should be followed by cv::waitKey function which displays the image for specified |
|
|
|
|
milliseconds. Otherwise, it won't display the image. For example, cv::waitKey(0) will display the window |
|
|
|
|
infinitely until any keypress (it is suitable for image display). cv::waitKey(25) will display a frame |
|
|
|
|
milliseconds. Otherwise, it won't display the image. For example, **waitKey(0)** will display the window |
|
|
|
|
infinitely until any keypress (it is suitable for image display). **waitKey(25)** will display a frame |
|
|
|
|
for 25 ms, after which display will be automatically closed. (If you put it in a loop to read |
|
|
|
|
videos, it will display the video frame-by-frame) |
|
|
|
|
|
|
|
|
|
@note |
|
|
|
|
|
|
|
|
|
[Windows Backend Only] Pressing Ctrl+C will copy the image to the clipboard. |
|
|
|
|
[__Windows Backend Only__] Pressing Ctrl+C will copy the image to the clipboard. |
|
|
|
|
|
|
|
|
|
[Windows Backend Only] Pressing Ctrl+S will show a dialog to save the image. |
|
|
|
|
[__Windows Backend Only__] Pressing Ctrl+S will show a dialog to save the image. |
|
|
|
|
|
|
|
|
|
@param winname Name of the window. |
|
|
|
|
@param mat Image to be shown. |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS_W void imshow(const String& winname, InputArray mat); |
|
|
|
|
|
|
|
|
|
/** @brief Resizes window to the specified size
|
|
|
|
|
|
|
|
|
|
@param winname Window name |
|
|
|
|
@param width The new window width |
|
|
|
|
@param height The new window height |
|
|
|
|
|
|
|
|
|
@note |
|
|
|
|
|
|
|
|
|
- The specified window size is for the image area. Toolbars are not counted. |
|
|
|
|
- Only windows created without WINDOW_AUTOSIZE flag can be resized. |
|
|
|
|
- Only windows created without cv::WINDOW_AUTOSIZE flag can be resized. |
|
|
|
|
|
|
|
|
|
@param winname Window name. |
|
|
|
|
@param width The new window width. |
|
|
|
|
@param height The new window height. |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS_W void resizeWindow(const String& winname, int width, int height); |
|
|
|
|
|
|
|
|
|
/** @brief Moves window to the specified position
|
|
|
|
|
|
|
|
|
|
@param winname Window name |
|
|
|
|
@param x The new x-coordinate of the window |
|
|
|
|
@param y The new y-coordinate of the window |
|
|
|
|
@param winname Name of the window. |
|
|
|
|
@param x The new x-coordinate of the window. |
|
|
|
|
@param y The new y-coordinate of the window. |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS_W void moveWindow(const String& winname, int x, int y); |
|
|
|
|
|
|
|
|
|
/** @brief Changes parameters of a window dynamically.
|
|
|
|
|
|
|
|
|
|
The function setWindowProperty enables changing properties of a window. |
|
|
|
|
|
|
|
|
|
@param winname Name of the window. |
|
|
|
|
@param prop_id Window property to edit. The supported operation flags are: (cv::WindowPropertyFlags) |
|
|
|
|
@param prop_value New value of the window property. The supported flags are: (cv::WindowFlags) |
|
|
|
|
|
|
|
|
|
The function setWindowProperty enables changing properties of a window. |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS_W void setWindowProperty(const String& winname, int prop_id, double prop_value); |
|
|
|
|
|
|
|
|
|
/** @brief Updates window title
|
|
|
|
|
@param winname Name of the window. |
|
|
|
|
@param title New title. |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS_W void setWindowTitle(const String& winname, const String& title); |
|
|
|
|
|
|
|
|
|
/** @brief Provides parameters of a window.
|
|
|
|
|
|
|
|
|
|
The function getWindowProperty returns properties of a window. |
|
|
|
|
|
|
|
|
|
@param winname Name of the window. |
|
|
|
|
@param prop_id Window property to retrieve. The following operation flags are available: (cv::WindowPropertyFlags) |
|
|
|
|
|
|
|
|
|
See setWindowProperty to know the meaning of the returned values. |
|
|
|
|
|
|
|
|
|
The function getWindowProperty returns properties of a window. |
|
|
|
|
@sa setWindowProperty |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS_W double getWindowProperty(const String& winname, int prop_id); |
|
|
|
|
|
|
|
|
|
/** @brief Sets mouse handler for the specified window
|
|
|
|
|
|
|
|
|
|
@param winname Window name |
|
|
|
|
@param winname Name of the window. |
|
|
|
|
@param onMouse Mouse callback. See OpenCV samples, such as |
|
|
|
|
<https://github.com/Itseez/opencv/tree/master/samples/cpp/ffilldemo.cpp>, on how to specify and
|
|
|
|
|
use the callback. |
|
|
|
@ -402,18 +429,16 @@ use the callback. |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS void setMouseCallback(const String& winname, MouseCallback onMouse, void* userdata = 0); |
|
|
|
|
|
|
|
|
|
/** @brief Gets the mouse-wheel motion delta, when handling mouse-wheel events EVENT_MOUSEWHEEL and
|
|
|
|
|
EVENT_MOUSEHWHEEL. |
|
|
|
|
|
|
|
|
|
@param flags The mouse callback flags parameter. |
|
|
|
|
/** @brief Gets the mouse-wheel motion delta, when handling mouse-wheel events cv::EVENT_MOUSEWHEEL and
|
|
|
|
|
cv::EVENT_MOUSEHWHEEL. |
|
|
|
|
|
|
|
|
|
For regular mice with a scroll-wheel, delta will be a multiple of 120. The value 120 corresponds to |
|
|
|
|
a one notch rotation of the wheel or the threshold for action to be taken and one such action should |
|
|
|
|
occur for each delta. Some high-precision mice with higher-resolution freely-rotating wheels may |
|
|
|
|
generate smaller values. |
|
|
|
|
|
|
|
|
|
For EVENT_MOUSEWHEEL positive and negative values mean forward and backward scrolling, |
|
|
|
|
respectively. For EVENT_MOUSEHWHEEL, where available, positive and negative values mean right and |
|
|
|
|
For cv::EVENT_MOUSEWHEEL positive and negative values mean forward and backward scrolling, |
|
|
|
|
respectively. For cv::EVENT_MOUSEHWHEEL, where available, positive and negative values mean right and |
|
|
|
|
left scrolling, respectively. |
|
|
|
|
|
|
|
|
|
With the C API, the macro CV_GET_WHEEL_DELTA(flags) can be used alternatively. |
|
|
|
@ -421,23 +446,13 @@ With the C API, the macro CV_GET_WHEEL_DELTA(flags) can be used alternatively. |
|
|
|
|
@note |
|
|
|
|
|
|
|
|
|
Mouse-wheel events are currently supported only on Windows. |
|
|
|
|
|
|
|
|
|
@param flags The mouse callback flags parameter. |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS int getMouseWheelDelta(int flags); |
|
|
|
|
|
|
|
|
|
/** @brief Creates a trackbar and attaches it to the specified window.
|
|
|
|
|
|
|
|
|
|
@param trackbarname Name of the created trackbar. |
|
|
|
|
@param winname Name of the window that will be used as a parent of the created trackbar. |
|
|
|
|
@param value Optional pointer to an integer variable whose value reflects the position of the |
|
|
|
|
slider. Upon creation, the slider position is defined by this variable. |
|
|
|
|
@param count Maximal position of the slider. The minimal position is always 0. |
|
|
|
|
@param onChange Pointer to the function to be called every time the slider changes position. This |
|
|
|
|
function should be prototyped as void Foo(int,void\*); , where the first parameter is the trackbar |
|
|
|
|
position and the second parameter is the user data (see the next parameter). If the callback is |
|
|
|
|
the NULL pointer, no callbacks are called, but only value is updated. |
|
|
|
|
@param userdata User data that is passed as is to the callback. It can be used to handle trackbar |
|
|
|
|
events without using global variables. |
|
|
|
|
|
|
|
|
|
The function createTrackbar creates a trackbar (a slider or range control) with the specified name |
|
|
|
|
and range, assigns a variable value to be a position synchronized with the trackbar and specifies |
|
|
|
|
the callback function onChange to be called on the trackbar position change. The created trackbar is |
|
|
|
@ -445,11 +460,22 @@ displayed in the specified window winname. |
|
|
|
|
|
|
|
|
|
@note |
|
|
|
|
|
|
|
|
|
**[Qt Backend Only]** winname can be empty (or NULL) if the trackbar should be attached to the |
|
|
|
|
[__Qt Backend Only__] winname can be empty (or NULL) if the trackbar should be attached to the |
|
|
|
|
control panel. |
|
|
|
|
|
|
|
|
|
Clicking the label of each trackbar enables editing the trackbar values manually. |
|
|
|
|
|
|
|
|
|
@param trackbarname Name of the created trackbar. |
|
|
|
|
@param winname Name of the window that will be used as a parent of the created trackbar. |
|
|
|
|
@param value Optional pointer to an integer variable whose value reflects the position of the |
|
|
|
|
slider. Upon creation, the slider position is defined by this variable. |
|
|
|
|
@param count Maximal position of the slider. The minimal position is always 0. |
|
|
|
|
@param onChange Pointer to the function to be called every time the slider changes position. This |
|
|
|
|
function should be prototyped as void Foo(int,void\*); , where the first parameter is the trackbar |
|
|
|
|
position and the second parameter is the user data (see the next parameter). If the callback is |
|
|
|
|
the NULL pointer, no callbacks are called, but only value is updated. |
|
|
|
|
@param userdata User data that is passed as is to the callback. It can be used to handle trackbar |
|
|
|
|
events without using global variables. |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS int createTrackbar(const String& trackbarname, const String& winname, |
|
|
|
|
int* value, int count, |
|
|
|
@ -458,63 +484,62 @@ CV_EXPORTS int createTrackbar(const String& trackbarname, const String& winname, |
|
|
|
|
|
|
|
|
|
/** @brief Returns the trackbar position.
|
|
|
|
|
|
|
|
|
|
@param trackbarname Name of the trackbar. |
|
|
|
|
@param winname Name of the window that is the parent of the trackbar. |
|
|
|
|
|
|
|
|
|
The function returns the current position of the specified trackbar. |
|
|
|
|
|
|
|
|
|
@note |
|
|
|
|
|
|
|
|
|
**[Qt Backend Only]** winname can be empty (or NULL) if the trackbar is attached to the control |
|
|
|
|
[__Qt Backend Only__] winname can be empty (or NULL) if the trackbar is attached to the control |
|
|
|
|
panel. |
|
|
|
|
|
|
|
|
|
@param trackbarname Name of the trackbar. |
|
|
|
|
@param winname Name of the window that is the parent of the trackbar. |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS_W int getTrackbarPos(const String& trackbarname, const String& winname); |
|
|
|
|
|
|
|
|
|
/** @brief Sets the trackbar position.
|
|
|
|
|
|
|
|
|
|
@param trackbarname Name of the trackbar. |
|
|
|
|
@param winname Name of the window that is the parent of trackbar. |
|
|
|
|
@param pos New position. |
|
|
|
|
|
|
|
|
|
The function sets the position of the specified trackbar in the specified window. |
|
|
|
|
|
|
|
|
|
@note |
|
|
|
|
|
|
|
|
|
**[Qt Backend Only]** winname can be empty (or NULL) if the trackbar is attached to the control |
|
|
|
|
[__Qt Backend Only__] winname can be empty (or NULL) if the trackbar is attached to the control |
|
|
|
|
panel. |
|
|
|
|
|
|
|
|
|
@param trackbarname Name of the trackbar. |
|
|
|
|
@param winname Name of the window that is the parent of trackbar. |
|
|
|
|
@param pos New position. |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS_W void setTrackbarPos(const String& trackbarname, const String& winname, int pos); |
|
|
|
|
|
|
|
|
|
/** @brief Sets the trackbar maximum position.
|
|
|
|
|
|
|
|
|
|
@param trackbarname Name of the trackbar. |
|
|
|
|
@param winname Name of the window that is the parent of trackbar. |
|
|
|
|
@param maxval New maximum position. |
|
|
|
|
|
|
|
|
|
The function sets the maximum position of the specified trackbar in the specified window. |
|
|
|
|
|
|
|
|
|
@note |
|
|
|
|
|
|
|
|
|
**[Qt Backend Only]** winname can be empty (or NULL) if the trackbar is attached to the control |
|
|
|
|
[__Qt Backend Only__] winname can be empty (or NULL) if the trackbar is attached to the control |
|
|
|
|
panel. |
|
|
|
|
|
|
|
|
|
@param trackbarname Name of the trackbar. |
|
|
|
|
@param winname Name of the window that is the parent of trackbar. |
|
|
|
|
@param maxval New maximum position. |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS_W void setTrackbarMax(const String& trackbarname, const String& winname, int maxval); |
|
|
|
|
|
|
|
|
|
//! @addtogroup highgui_opengl OpenGL support
|
|
|
|
|
//! @{
|
|
|
|
|
|
|
|
|
|
/** @brief Displays OpenGL 2D texture in the specified window.
|
|
|
|
|
|
|
|
|
|
@param winname Name of the window. |
|
|
|
|
@param tex OpenGL 2D texture data. |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS void imshow(const String& winname, const ogl::Texture2D& tex); |
|
|
|
|
|
|
|
|
|
/** @brief Sets a callback function to be called to draw on top of displayed image.
|
|
|
|
|
|
|
|
|
|
@param winname Name of the window. |
|
|
|
|
@param onOpenGlDraw Pointer to the function to be called every frame. This function should be |
|
|
|
|
prototyped as void Foo(void\*) . |
|
|
|
|
@param userdata Pointer passed to the callback function. *(Optional)* |
|
|
|
|
|
|
|
|
|
The function setOpenGlDrawCallback can be used to draw 3D data on the window. See the example of |
|
|
|
|
callback function below: : |
|
|
|
|
callback function below: |
|
|
|
|
@code |
|
|
|
|
void on_opengl(void* param) |
|
|
|
|
{ |
|
|
|
@ -545,18 +570,23 @@ callback function below: : |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@endcode |
|
|
|
|
|
|
|
|
|
@param winname Name of the window. |
|
|
|
|
@param onOpenGlDraw Pointer to the function to be called every frame. This function should be |
|
|
|
|
prototyped as void Foo(void\*) . |
|
|
|
|
@param userdata Pointer passed to the callback function.(__Optional__) |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS void setOpenGlDrawCallback(const String& winname, OpenGlDrawCallback onOpenGlDraw, void* userdata = 0); |
|
|
|
|
|
|
|
|
|
/** @brief Sets the specified window as current OpenGL context.
|
|
|
|
|
|
|
|
|
|
@param winname Window name |
|
|
|
|
@param winname Name of the window. |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS void setOpenGlContext(const String& winname); |
|
|
|
|
|
|
|
|
|
/** @brief Force window to redraw its context and call draw callback ( setOpenGlDrawCallback ).
|
|
|
|
|
/** @brief Force window to redraw its context and call draw callback ( See cv::setOpenGlDrawCallback ).
|
|
|
|
|
|
|
|
|
|
@param winname Window name |
|
|
|
|
@param winname Name of the window. |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS void updateWindow(const String& winname); |
|
|
|
|
|
|
|
|
@ -564,102 +594,103 @@ CV_EXPORTS void updateWindow(const String& winname); |
|
|
|
|
|
|
|
|
|
//! @addtogroup highgui_qt
|
|
|
|
|
//! @{
|
|
|
|
|
// Only for Qt
|
|
|
|
|
|
|
|
|
|
/** @brief QtFont available only for Qt. See cv::fontQt
|
|
|
|
|
*/ |
|
|
|
|
struct QtFont |
|
|
|
|
{ |
|
|
|
|
const char* nameFont; // Qt: nameFont
|
|
|
|
|
Scalar color; // Qt: ColorFont -> cvScalar(blue_component, green_component, red_component[, alpha_component])
|
|
|
|
|
int font_face; // Qt: bool italic
|
|
|
|
|
const int* ascii; // font data and metrics
|
|
|
|
|
const char* nameFont; //!< Name of the font
|
|
|
|
|
Scalar color; //!< Color of the font. Scalar(blue_component, green_component, red_component[, alpha_component])
|
|
|
|
|
int font_face; //!< See cv::QtFontStyles
|
|
|
|
|
const int* ascii; //!< font data and metrics
|
|
|
|
|
const int* greek; |
|
|
|
|
const int* cyrillic; |
|
|
|
|
float hscale, vscale; |
|
|
|
|
float shear; // slope coefficient: 0 - normal, >0 - italic
|
|
|
|
|
int thickness; // Qt: weight
|
|
|
|
|
float dx; // horizontal interval between letters
|
|
|
|
|
int line_type; // Qt: PointSize
|
|
|
|
|
float shear; //!< slope coefficient: 0 - normal, >0 - italic
|
|
|
|
|
int thickness; //!< See cv::QtFontWeights
|
|
|
|
|
float dx; //!< horizontal interval between letters
|
|
|
|
|
int line_type; //!< PointSize
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/** @brief Creates the font to draw a text on an image.
|
|
|
|
|
|
|
|
|
|
The function fontQt creates a cv::QtFont object. This cv::QtFont is not compatible with putText . |
|
|
|
|
|
|
|
|
|
A basic usage of this function is the following: : |
|
|
|
|
@code |
|
|
|
|
QtFont font = fontQt("Times"); |
|
|
|
|
addText( img1, "Hello World !", Point(50,50), font); |
|
|
|
|
@endcode |
|
|
|
|
|
|
|
|
|
@param nameFont Name of the font. The name should match the name of a system font (such as |
|
|
|
|
*Times*). If the font is not found, a default one is used. |
|
|
|
|
@param pointSize Size of the font. If not specified, equal zero or negative, the point size of the |
|
|
|
|
font is set to a system-dependent default value. Generally, this is 12 points. |
|
|
|
|
@param color Color of the font in BGRA where A = 255 is fully transparent. Use the macro CV _ RGB |
|
|
|
|
@param color Color of the font in BGRA where A = 255 is fully transparent. Use the macro CV_RGB |
|
|
|
|
for simplicity. |
|
|
|
|
@param weight Font weight. Available operation flags are : (cv::QtFontWeights) You can also specify a positive integer for better control. |
|
|
|
|
@param style Font style. The following operation flags are available: (cv::QtFontStyles) |
|
|
|
|
@param weight Font weight. Available operation flags are : cv::QtFontWeights You can also specify a positive integer for better control. |
|
|
|
|
@param style Font style. Available operation flags are : cv::QtFontStyles |
|
|
|
|
@param spacing Spacing between characters. It can be negative or positive. |
|
|
|
|
|
|
|
|
|
The function fontQt creates a QtFont object. This QtFont is not compatible with putText . |
|
|
|
|
|
|
|
|
|
A basic usage of this function is the following: : |
|
|
|
|
@code |
|
|
|
|
QtFont font = fontQt(''Times''); |
|
|
|
|
addText( img1, ``Hello World !'', Point(50,50), font); |
|
|
|
|
@endcode |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS QtFont fontQt(const String& nameFont, int pointSize = -1, |
|
|
|
|
Scalar color = Scalar::all(0), int weight = QT_FONT_NORMAL, |
|
|
|
|
int style = QT_STYLE_NORMAL, int spacing = 0); |
|
|
|
|
|
|
|
|
|
/** @brief Creates the font to draw a text on an image.
|
|
|
|
|
/** @brief Draws a text on the image.
|
|
|
|
|
|
|
|
|
|
The function addText draws *text* on the image *img* using a specific font *font* (see example cv::fontQt |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
@param img 8-bit 3-channel image where the text should be drawn. |
|
|
|
|
@param text Text to write on an image. |
|
|
|
|
@param org Point(x,y) where the text should start on an image. |
|
|
|
|
@param font Font to use to draw a text. |
|
|
|
|
|
|
|
|
|
The function addText draws *text* on an image *img* using a specific font *font* (see example cv::fontQt |
|
|
|
|
) |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS void addText( const Mat& img, const String& text, Point org, const QtFont& font); |
|
|
|
|
|
|
|
|
|
/** @brief Displays a text on a window image as an overlay for a specified duration.
|
|
|
|
|
|
|
|
|
|
The function displayOverlay displays useful information/tips on top of the window for a certain |
|
|
|
|
amount of time *delayms*. The function does not modify the image, displayed in the window, that is, |
|
|
|
|
after the specified delay the original content of the window is restored. |
|
|
|
|
|
|
|
|
|
@param winname Name of the window. |
|
|
|
|
@param text Overlay text to write on a window image. |
|
|
|
|
@param delayms The period (in milliseconds), during which the overlay text is displayed. If this |
|
|
|
|
function is called before the previous overlay text timed out, the timer is restarted and the text |
|
|
|
|
is updated. If this value is zero, the text never disappears. |
|
|
|
|
|
|
|
|
|
The function displayOverlay displays useful information/tips on top of the window for a certain |
|
|
|
|
amount of time *delayms*. The function does not modify the image, displayed in the window, that is, |
|
|
|
|
after the specified delay the original content of the window is restored. |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS void displayOverlay(const String& winname, const String& text, int delayms = 0); |
|
|
|
|
|
|
|
|
|
/** @brief Displays a text on the window statusbar during the specified period of time.
|
|
|
|
|
|
|
|
|
|
The function displayStatusBar displays useful information/tips on top of the window for a certain |
|
|
|
|
amount of time *delayms* . This information is displayed on the window statusbar (the window must be |
|
|
|
|
created with the CV_GUI_EXPANDED flags). |
|
|
|
|
|
|
|
|
|
@param winname Name of the window. |
|
|
|
|
@param text Text to write on the window statusbar. |
|
|
|
|
@param delayms Duration (in milliseconds) to display the text. If this function is called before |
|
|
|
|
the previous text timed out, the timer is restarted and the text is updated. If this value is |
|
|
|
|
zero, the text never disappears. |
|
|
|
|
|
|
|
|
|
The function displayStatusBar displays useful information/tips on top of the window for a certain |
|
|
|
|
amount of time *delayms* . This information is displayed on the window statusbar (the window must be |
|
|
|
|
created with the CV_GUI_EXPANDED flags). |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS void displayStatusBar(const String& winname, const String& text, int delayms = 0); |
|
|
|
|
|
|
|
|
|
/** @brief Saves parameters of the specified window.
|
|
|
|
|
|
|
|
|
|
@param windowName Name of the window. |
|
|
|
|
|
|
|
|
|
The function saveWindowParameters saves size, location, flags, trackbars value, zoom and panning |
|
|
|
|
location of the window window_name . |
|
|
|
|
location of the window windowName. |
|
|
|
|
|
|
|
|
|
@param windowName Name of the window. |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS void saveWindowParameters(const String& windowName); |
|
|
|
|
|
|
|
|
|
/** @brief Loads parameters of the specified window.
|
|
|
|
|
|
|
|
|
|
@param windowName Name of the window. |
|
|
|
|
|
|
|
|
|
The function loadWindowParameters loads size, location, flags, trackbars value, zoom and panning |
|
|
|
|
location of the window window_name . |
|
|
|
|
location of the window windowName. |
|
|
|
|
|
|
|
|
|
@param windowName Name of the window. |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS void loadWindowParameters(const String& windowName); |
|
|
|
|
|
|
|
|
@ -669,21 +700,11 @@ CV_EXPORTS void stopLoop(); |
|
|
|
|
|
|
|
|
|
/** @brief Attaches a button to the control panel.
|
|
|
|
|
|
|
|
|
|
@param bar_name |
|
|
|
|
Name of the button. |
|
|
|
|
@param on_change Pointer to the function to be called every time the button changes its state. |
|
|
|
|
This function should be prototyped as void Foo(int state,\*void); . *state* is the current state |
|
|
|
|
of the button. It could be -1 for a push button, 0 or 1 for a check/radio box button. |
|
|
|
|
@param userdata Pointer passed to the callback function. |
|
|
|
|
@param type Optional type of the button. Available types are: (cv::QtButtonTypes) |
|
|
|
|
@param initial_button_state Default state of the button. Use for checkbox and radiobox. Its |
|
|
|
|
value could be 0 or 1. *(Optional)* |
|
|
|
|
|
|
|
|
|
The function createButton attaches a button to the control panel. Each button is added to a |
|
|
|
|
buttonbar to the right of the last button. A new buttonbar is created if nothing was attached to the |
|
|
|
|
control panel before, or if the last element attached to the control panel was a trackbar. |
|
|
|
|
|
|
|
|
|
See below various examples of the createButton function call: : |
|
|
|
|
See below various examples of the cv::createButton function call: : |
|
|
|
|
@code |
|
|
|
|
createButton(NULL,callbackButton);//create a push button "button 0", that will call callbackButton.
|
|
|
|
|
createButton("button2",callbackButton,NULL,QT_CHECKBOX,0); |
|
|
|
@ -691,6 +712,15 @@ See below various examples of the createButton function call: : |
|
|
|
|
createButton("button5",callbackButton1,NULL,QT_RADIOBOX); |
|
|
|
|
createButton("button6",callbackButton2,NULL,QT_PUSH_BUTTON,1); |
|
|
|
|
@endcode |
|
|
|
|
|
|
|
|
|
@param bar_name Name of the button. |
|
|
|
|
@param on_change Pointer to the function to be called every time the button changes its state. |
|
|
|
|
This function should be prototyped as void Foo(int state,\*void); . *state* is the current state |
|
|
|
|
of the button. It could be -1 for a push button, 0 or 1 for a check/radio box button. |
|
|
|
|
@param userdata Pointer passed to the callback function. |
|
|
|
|
@param type Optional type of the button. Available types are: (cv::QtButtonTypes) |
|
|
|
|
@param initial_button_state Default state of the button. Use for checkbox and radiobox. Its |
|
|
|
|
value could be 0 or 1. (__Optional__) |
|
|
|
|
*/ |
|
|
|
|
CV_EXPORTS int createButton( const String& bar_name, ButtonCallback on_change, |
|
|
|
|
void* userdata = 0, int type = QT_PUSH_BUTTON, |
|
|
|
|