Pastebin is 300% more awesome when you are logged in. Sign Up, it's FREE!
Guest

Untitled

By: a guest on Apr 17th, 2012  |  syntax: C++  |  size: 15.74 KB  |  hits: 31  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  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* windw_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