opencv  2.2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
highgui_c.h
Go to the documentation of this file.
1 /*M///////////////////////////////////////////////////////////////////////////////////////
2 //
3 // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
4 //
5 // By downloading, copying, installing or using the software you agree to this license.
6 // If you do not agree to this license, do not download, install,
7 // copy or use the software.
8 //
9 //
10 // Intel License Agreement
11 // For Open Source Computer Vision Library
12 //
13 // Copyright (C) 2000, Intel Corporation, all rights reserved.
14 // Third party copyrights are property of their respective owners.
15 //
16 // Redistribution and use in source and binary forms, with or without modification,
17 // are permitted provided that the following conditions are met:
18 //
19 // * Redistribution's of source code must retain the above copyright notice,
20 // this list of conditions and the following disclaimer.
21 //
22 // * Redistribution's in binary form must reproduce the above copyright notice,
23 // this list of conditions and the following disclaimer in the documentation
24 // and/or other materials provided with the distribution.
25 //
26 // * The name of Intel Corporation may not be used to endorse or promote products
27 // derived from this software without specific prior written permission.
28 //
29 // This software is provided by the copyright holders and contributors "as is" and
30 // any express or implied warranties, including, but not limited to, the implied
31 // warranties of merchantability and fitness for a particular purpose are disclaimed.
32 // In no event shall the Intel Corporation or contributors be liable for any direct,
33 // indirect, incidental, special, exemplary, or consequential damages
34 // (including, but not limited to, procurement of substitute goods or services;
35 // loss of use, data, or profits; or business interruption) however caused
36 // and on any theory of liability, whether in contract, strict liability,
37 // or tort (including negligence or otherwise) arising in any way out of
38 // the use of this software, even if advised of the possibility of such damage.
39 //
40 //M*/
41 
42 #ifndef __OPENCV_HIGHGUI_H__
43 #define __OPENCV_HIGHGUI_H__
44 
45 #include "opencv2/core/core_c.h"
46 #if defined WIN32 || defined _WIN32
47  #include <windows.h>
48  #undef min
49  #undef max
50 #endif
51 
52 #ifdef __cplusplus
53 extern "C" {
54 #endif /* __cplusplus */
55 
56 /****************************************************************************************\
57 * Basic GUI functions *
58 \****************************************************************************************/
59 //YV
60 //-----------New for Qt
61 /* For font */
62 enum { CV_FONT_LIGHT = 25,//QFont::Light,
63  CV_FONT_NORMAL = 50,//QFont::Normal,
64  CV_FONT_DEMIBOLD = 63,//QFont::DemiBold,
65  CV_FONT_BOLD = 75,//QFont::Bold,
66  CV_FONT_BLACK = 87 //QFont::Black
67 };
68 
69 enum { CV_STYLE_NORMAL = 0,//QFont::StyleNormal,
70  CV_STYLE_ITALIC = 1,//QFont::StyleItalic,
71  CV_STYLE_OBLIQUE = 2 //QFont::StyleOblique
72 };
73 /* ---------*/
74 
75 //for color cvScalar(blue_component, green_component, red\_component[, alpha_component])
76 //and alpha= 0 <-> 0xFF (not transparent <-> transparent)
77 CVAPI(CvFont) cvFontQt(const char* nameFont, int pointSize CV_DEFAULT(-1), CvScalar color CV_DEFAULT(cvScalarAll(0)), int weight CV_DEFAULT(CV_FONT_NORMAL), int style CV_DEFAULT(CV_STYLE_NORMAL), int spacing CV_DEFAULT(0));
78 
79 CVAPI(void) cvAddText(const CvArr* img, const char* text, CvPoint org, CvFont *arg2);
80 
81 CVAPI(void) cvDisplayOverlay(const char* name, const char* text, int delayms);
82 CVAPI(void) cvDisplayStatusBar(const char* name, const char* text, int delayms);
83 
84 typedef void (CV_CDECL *CvOpenGLCallback)(void* userdata);
85 CVAPI(void) cvCreateOpenGLCallback( const char* window_name, CvOpenGLCallback callbackOpenGL, void* userdata CV_DEFAULT(NULL), double angle CV_DEFAULT(-1), double zmin CV_DEFAULT(-1), double zmax CV_DEFAULT(-1));
86 
87 CVAPI(void) cvSaveWindowParameters(const char* name);
88 CVAPI(void) cvLoadWindowParameters(const char* name);
89 CVAPI(int) cvStartLoop(int (*pt2Func)(int argc, char *argv[]), int argc, char* argv[]);
90 CVAPI(void) cvStopLoop();
91 
92 typedef void (CV_CDECL *CvButtonCallback)(int state, void* userdata);
93 enum {CV_PUSH_BUTTON = 0, CV_CHECKBOX = 1, CV_RADIOBOX = 2};
94 CVAPI(int) cvCreateButton( const char* button_name CV_DEFAULT(NULL),CvButtonCallback on_change CV_DEFAULT(NULL), void* userdata CV_DEFAULT(NULL) , int button_type CV_DEFAULT(CV_PUSH_BUTTON), int initial_button_state CV_DEFAULT(0));
95 //----------------------
96 
97 
98 /* this function is used to set some external parameters in case of X Window */
99 CVAPI(int) cvInitSystem( int argc, char** argv );
100 
101 CVAPI(int) cvStartWindowThread();
102 
103 // --------- YV ---------
104 enum
105 {
106  //These 3 flags are used by cvSet/GetWindowProperty
107  CV_WND_PROP_FULLSCREEN = 0,//to change/get window's fullscreen property
108  CV_WND_PROP_AUTOSIZE = 1,//to change/get window's autosize property
109  CV_WND_PROP_ASPECTRATIO= 2,//to change/get window's aspectratio property
110  //
111  //These 2 flags are used by cvNamedWindow and cvSet/GetWindowProperty
112  CV_WINDOW_NORMAL = 0x00000000,//the user can resize the window (no constraint) / also use to switch a fullscreen window to a normal size
113  CV_WINDOW_AUTOSIZE = 0x00000001,//the user cannot resize the window, the size is constrainted by the image displayed
114  //
115  //Those flags are only for Qt
116  CV_GUI_EXPANDED = 0x00000000,//status bar and tool bar
117  CV_GUI_NORMAL = 0x00000010,//old fashious way
118  //
119  //These 3 flags are used by cvNamedWindow and cvSet/GetWindowProperty
120  CV_WINDOW_FULLSCREEN = 1,//change the window to fullscreen
121  CV_WINDOW_FREERATIO = 0x00000100,//the image expends as much as it can (no ratio constraint)
122  CV_WINDOW_KEEPRATIO = 0x00000000//the ration image is respected.
123 };
124 
125 /* create window */
126 CVAPI(int) cvNamedWindow( const char* name, int flags CV_DEFAULT(CV_WINDOW_AUTOSIZE) );
127 
128 /* Set and Get Property of the window */
129 CVAPI(void) cvSetWindowProperty(const char* name, int prop_id, double prop_value);
130 CVAPI(double) cvGetWindowProperty(const char* name, int prop_id);
131 
132 /* display image within window (highgui windows remember their content) */
133 CVAPI(void) cvShowImage( const char* name, const CvArr* image );
134 
135 /* resize/move window */
136 CVAPI(void) cvResizeWindow( const char* name, int width, int height );
137 CVAPI(void) cvMoveWindow( const char* name, int x, int y );
138 
139 
140 /* destroy window and all the trackers associated with it */
141 CVAPI(void) cvDestroyWindow( const char* name );
142 
143 CVAPI(void) cvDestroyAllWindows(void);
144 
145 /* get native window handle (HWND in case of Win32 and Widget in case of X Window) */
146 CVAPI(void*) cvGetWindowHandle( const char* name );
147 
148 /* get name of highgui window given its native handle */
149 CVAPI(const char*) cvGetWindowName( void* window_handle );
150 
151 
152 typedef void (CV_CDECL *CvTrackbarCallback)(int pos);
153 
154 /* create trackbar and display it on top of given window, set callback */
155 CVAPI(int) cvCreateTrackbar( const char* trackbar_name, const char* window_name,
156  int* value, int count, CvTrackbarCallback on_change CV_DEFAULT(NULL));
157 
158 typedef void (CV_CDECL *CvTrackbarCallback2)(int pos, void* userdata);
159 
160 CVAPI(int) cvCreateTrackbar2( const char* trackbar_name, const char* window_name,
161  int* value, int count, CvTrackbarCallback2 on_change,
162  void* userdata CV_DEFAULT(0));
163 
164 /* retrieve or set trackbar position */
165 CVAPI(int) cvGetTrackbarPos( const char* trackbar_name, const char* window_name );
166 CVAPI(void) cvSetTrackbarPos( const char* trackbar_name, const char* window_name, int pos );
167 
168 enum
169 {
180 };
181 
182 enum
183 {
190 };
191 
192 typedef void (CV_CDECL *CvMouseCallback )(int event, int x, int y, int flags, void* param);
193 
194 /* assign callback for mouse events */
195 CVAPI(void) cvSetMouseCallback( const char* window_name, CvMouseCallback on_mouse,
196  void* param CV_DEFAULT(NULL));
197 
198 enum
199 {
200 /* 8bit, color or not */
202 /* 8bit, gray */
204 /* ?, color */
206 /* any depth, ? */
208 /* ?, any color */
210 };
211 
212 /* load image from file
213  iscolor can be a combination of above flags where CV_LOAD_IMAGE_UNCHANGED
214  overrides the other flags
215  using CV_LOAD_IMAGE_ANYCOLOR alone is equivalent to CV_LOAD_IMAGE_UNCHANGED
216  unless CV_LOAD_IMAGE_ANYDEPTH is specified images are converted to 8bit
217 */
218 CVAPI(IplImage*) cvLoadImage( const char* filename, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR));
219 CVAPI(CvMat*) cvLoadImageM( const char* filename, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR));
220 
221 enum
222 {
226 };
227 
228 /* save image to file */
229 CVAPI(int) cvSaveImage( const char* filename, const CvArr* image,
230  const int* params CV_DEFAULT(0) );
231 
232 /* decode image stored in the buffer */
233 CVAPI(IplImage*) cvDecodeImage( const CvMat* buf, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR));
234 CVAPI(CvMat*) cvDecodeImageM( const CvMat* buf, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR));
235 
236 /* encode image and store the result as a byte vector (single-row 8uC1 matrix) */
237 CVAPI(CvMat*) cvEncodeImage( const char* ext, const CvArr* image,
238  const int* params CV_DEFAULT(0) );
239 
240 enum
241 {
244 };
245 
246 /* utility function: convert one image to another with optional vertical flip */
247 CVAPI(void) cvConvertImage( const CvArr* src, CvArr* dst, int flags CV_DEFAULT(0));
248 
249 /* wait for key event infinitely (delay<=0) or for "delay" milliseconds */
250 CVAPI(int) cvWaitKey(int delay CV_DEFAULT(0));
251 
252 /****************************************************************************************\
253 * Working with Video Files and Cameras *
254 \****************************************************************************************/
255 
256 /* "black box" capture structure */
257 typedef struct CvCapture CvCapture;
258 
259 /* start capturing frames from video file */
260 CVAPI(CvCapture*) cvCreateFileCapture( const char* filename );
261 
262 enum
263 {
264  CV_CAP_ANY =0, // autodetect
265 
266  CV_CAP_MIL =100, // MIL proprietary drivers
267 
268  CV_CAP_VFW =200, // platform native
271 
272  CV_CAP_FIREWARE =300, // IEEE 1394 drivers
277 
278  CV_CAP_STEREO =400, // TYZX proprietary drivers
283  CV_TYZX_Z =403,
284 
285  CV_CAP_QT =500, // QuickTime
286 
287  CV_CAP_UNICAP =600, // Unicap drivers
288 
289  CV_CAP_DSHOW =700, // DirectShow (via videoInput)
290 
291  CV_CAP_PVAPI =800 // PvAPI, Prosilica GigE SDK
292 };
293 
294 /* start capturing frames from camera: index = camera_index + domain_offset (CV_CAP_*) */
295 CVAPI(CvCapture*) cvCreateCameraCapture( int index );
296 
297 /* grab a frame, return 1 on success, 0 on fail.
298  this function is thought to be fast */
299 CVAPI(int) cvGrabFrame( CvCapture* capture );
300 
301 /* get the frame grabbed with cvGrabFrame(..)
302  This function may apply some frame processing like
303  frame decompression, flipping etc.
304  !!!DO NOT RELEASE or MODIFY the retrieved frame!!! */
305 CVAPI(IplImage*) cvRetrieveFrame( CvCapture* capture, int streamIdx CV_DEFAULT(0) );
306 
307 /* Just a combination of cvGrabFrame and cvRetrieveFrame
308  !!!DO NOT RELEASE or MODIFY the retrieved frame!!! */
309 CVAPI(IplImage*) cvQueryFrame( CvCapture* capture );
310 
311 /* stop capturing/reading and free resources */
312 CVAPI(void) cvReleaseCapture( CvCapture** capture );
313 
314 enum
315 {
336 };
337 
338 /* retrieve or set capture properties */
339 CVAPI(double) cvGetCaptureProperty( CvCapture* capture, int property_id );
340 CVAPI(int) cvSetCaptureProperty( CvCapture* capture, int property_id, double value );
341 
342 // Return the type of the capturer (eg, CV_CAP_V4W, CV_CAP_UNICAP), which is unknown if created with CV_CAP_ANY
343 CVAPI(int) cvGetCaptureDomain( CvCapture* capture);
344 
345 /* "black box" video file writer structure */
347 
348 CV_INLINE int CV_FOURCC(char c1, char c2, char c3, char c4)
349 {
350  return (c1 & 255) + ((c2 & 255) << 8) + ((c3 &255) << 16) + ((c4 & 255) << 24);
351 }
352 
353 #define CV_FOURCC_PROMPT -1 /* Open Codec Selection Dialog (Windows only) */
354 #define CV_FOURCC_DEFAULT CV_FOURCC('I', 'Y', 'U', 'V') /* Use default codec for specified filename (Linux only) */
355 
356 /* initialize video file writer */
357 CVAPI(CvVideoWriter*) cvCreateVideoWriter( const char* filename, int fourcc,
358  double fps, CvSize frame_size,
359  int is_color CV_DEFAULT(1));
360 
361 //CVAPI(CvVideoWriter*) cvCreateImageSequenceWriter( const char* filename,
362 // int is_color CV_DEFAULT(1));
363 
364 /* write frame to video file */
365 CVAPI(int) cvWriteFrame( CvVideoWriter* writer, const IplImage* image );
366 
367 /* close video file writer */
368 CVAPI(void) cvReleaseVideoWriter( CvVideoWriter** writer );
369 
370 /****************************************************************************************\
371 * Obsolete functions/synonyms *
372 \****************************************************************************************/
373 
374 #define cvCaptureFromFile cvCreateFileCapture
375 #define cvCaptureFromCAM cvCreateCameraCapture
376 #define cvCaptureFromAVI cvCaptureFromFile
377 #define cvCreateAVIWriter cvCreateVideoWriter
378 #define cvWriteToAVI cvWriteFrame
379 #define cvAddSearchPath(path)
380 #define cvvInitSystem cvInitSystem
381 #define cvvNamedWindow cvNamedWindow
382 #define cvvShowImage cvShowImage
383 #define cvvResizeWindow cvResizeWindow
384 #define cvvDestroyWindow cvDestroyWindow
385 #define cvvCreateTrackbar cvCreateTrackbar
386 #define cvvLoadImage(name) cvLoadImage((name),1)
387 #define cvvSaveImage cvSaveImage
388 #define cvvAddSearchPath cvAddSearchPath
389 #define cvvWaitKey(name) cvWaitKey(0)
390 #define cvvWaitKeyEx(name,delay) cvWaitKey(delay)
391 #define cvvConvertImage cvConvertImage
392 #define HG_AUTOSIZE CV_WINDOW_AUTOSIZE
393 #define set_preprocess_func cvSetPreprocessFuncWin32
394 #define set_postprocess_func cvSetPostprocessFuncWin32
395 
396 #if defined WIN32 || defined _WIN32
397 
398 typedef int (CV_CDECL * CvWin32WindowCallback)(HWND, UINT, WPARAM, LPARAM, int*);
399 CVAPI(void) cvSetPreprocessFuncWin32( CvWin32WindowCallback on_preprocess );
400 CVAPI(void) cvSetPostprocessFuncWin32( CvWin32WindowCallback on_postprocess );
401 
402 #endif
403 
404 #ifdef __cplusplus
405 }
406 #endif
407 
408 #endif