opencv 2.2.0

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- File List
- File Members

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 {
170 CV_EVENT_MOUSEMOVE =0,
171 CV_EVENT_LBUTTONDOWN =1,
172 CV_EVENT_RBUTTONDOWN =2,
173 CV_EVENT_MBUTTONDOWN =3,
174 CV_EVENT_LBUTTONUP =4,
175 CV_EVENT_RBUTTONUP =5,
176 CV_EVENT_MBUTTONUP =6,
177 CV_EVENT_LBUTTONDBLCLK =7,
178 CV_EVENT_RBUTTONDBLCLK =8,
179 CV_EVENT_MBUTTONDBLCLK =9
180 };
181
182 enum
183 {
184 CV_EVENT_FLAG_LBUTTON =1,
185 CV_EVENT_FLAG_RBUTTON =2,
186 CV_EVENT_FLAG_MBUTTON =4,
187 CV_EVENT_FLAG_CTRLKEY =8,
188 CV_EVENT_FLAG_SHIFTKEY =16,
189 CV_EVENT_FLAG_ALTKEY =32
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 */
201 CV_LOAD_IMAGE_UNCHANGED =-1,
202 /* 8bit, gray */
203 CV_LOAD_IMAGE_GRAYSCALE =0,
204 /* ?, color */
205 CV_LOAD_IMAGE_COLOR =1,
206 /* any depth, ? */
207 CV_LOAD_IMAGE_ANYDEPTH =2,
208 /* ?, any color */
209 CV_LOAD_IMAGE_ANYCOLOR =4
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 {
223 CV_IMWRITE_JPEG_QUALITY =1,
224 CV_IMWRITE_PNG_COMPRESSION =16,
225 CV_IMWRITE_PXM_BINARY =32
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 {
242 CV_CVTIMG_FLIP =1,
243 CV_CVTIMG_SWAP_RB =2
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
269 CV_CAP_V4L =200,
270 CV_CAP_V4L2 =200,
271
272 CV_CAP_FIREWARE =300, // IEEE 1394 drivers
273 CV_CAP_FIREWIRE =300,
274 CV_CAP_IEEE1394 =300,
275 CV_CAP_DC1394 =300,
276 CV_CAP_CMU1394 =300,
277
278 CV_CAP_STEREO =400, // TYZX proprietary drivers
279 CV_CAP_TYZX =400,
280 CV_TYZX_LEFT =400,
281 CV_TYZX_RIGHT =401,
282 CV_TYZX_COLOR =402,
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 {
316 CV_CAP_PROP_POS_MSEC =0,
317 CV_CAP_PROP_POS_FRAMES =1,
318 CV_CAP_PROP_POS_AVI_RATIO =2,
319 CV_CAP_PROP_FRAME_WIDTH =3,
320 CV_CAP_PROP_FRAME_HEIGHT =4,
321 CV_CAP_PROP_FPS =5,
322 CV_CAP_PROP_FOURCC =6,
323 CV_CAP_PROP_FRAME_COUNT =7,
324 CV_CAP_PROP_FORMAT =8,
325 CV_CAP_PROP_MODE =9,
326 CV_CAP_PROP_BRIGHTNESS =10,
327 CV_CAP_PROP_CONTRAST =11,
328 CV_CAP_PROP_SATURATION =12,
329 CV_CAP_PROP_HUE =13,
330 CV_CAP_PROP_GAIN =14,
331 CV_CAP_PROP_EXPOSURE =15,
332 CV_CAP_PROP_CONVERT_RGB =16,
333 CV_CAP_PROP_WHITE_BALANCE =17,
334 CV_CAP_PROP_RECTIFICATION =18,
335 CV_CAP_PROP_MONOCROME =19
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 */
346 typedef struct CvVideoWriter CvVideoWriter;
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