16acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*M///////////////////////////////////////////////////////////////////////////////////////
26acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
36acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
46acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
56acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//  By downloading, copying, installing or using the software you agree to this license.
66acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//  If you do not agree to this license, do not download, install,
76acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//  copy or use the software.
86acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
96acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//                        Intel License Agreement
116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//                For Open Source Computer Vision Library
126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Copyright (C) 2000, Intel Corporation, all rights reserved.
146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Third party copyrights are property of their respective owners.
156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Redistribution and use in source and binary forms, with or without modification,
176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// are permitted provided that the following conditions are met:
186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//   * Redistribution's of source code must retain the above copyright notice,
206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//     this list of conditions and the following disclaimer.
216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//   * Redistribution's in binary form must reproduce the above copyright notice,
236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//     this list of conditions and the following disclaimer in the documentation
246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//     and/or other materials provided with the distribution.
256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//   * The name of Intel Corporation may not be used to endorse or promote products
276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//     derived from this software without specific prior written permission.
286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// This software is provided by the copyright holders and contributors "as is" and
306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// any express or implied warranties, including, but not limited to, the implied
316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// warranties of merchantability and fitness for a particular purpose are disclaimed.
326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// In no event shall the Intel Corporation or contributors be liable for any direct,
336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// indirect, incidental, special, exemplary, or consequential damages
346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// (including, but not limited to, procurement of substitute goods or services;
356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// loss of use, data, or profits; or business interruption) however caused
366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// and on any theory of liability, whether in contract, strict liability,
376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// or tort (including negligence or otherwise) arising in any way out of
386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// the use of this software, even if advised of the possibility of such damage.
396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//M*/
416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifndef _HIGH_GUI_
436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define _HIGH_GUI_
446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifndef SKIP_INCLUDES
466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  #include "cxcore.h"
486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  #if defined WIN32 || defined WIN64
496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    #include <windows.h>
506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  #endif
516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#else // SKIP_INCLUDES
536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  #if defined WIN32 || defined WIN64
556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    #define CV_CDECL __cdecl
566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    #define CV_STDCALL __stdcall
576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  #else
586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    #define CV_CDECL
596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    #define CV_STDCALL
606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  #endif
616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  #ifndef CV_EXTERN_C
636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    #ifdef __cplusplus
646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn      #define CV_EXTERN_C extern "C"
656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn      #define CV_DEFAULT(val) = val
666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    #else
676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn      #define CV_EXTERN_C
686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn      #define CV_DEFAULT(val)
696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    #endif
706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  #endif
716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  #ifndef CV_EXTERN_C_FUNCPTR
736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    #ifdef __cplusplus
746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn      #define CV_EXTERN_C_FUNCPTR(x) extern "C" { typedef x; }
756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    #else
766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn      #define CV_EXTERN_C_FUNCPTR(x) typedef x
776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    #endif
786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  #endif
796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  #ifndef CV_INLINE
816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    #if defined __cplusplus
826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn      #define CV_INLINE inline
836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    #elif (defined WIN32 || defined WIN64) && !defined __GNUC__
846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn      #define CV_INLINE __inline
856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    #else
866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn      #define CV_INLINE static
876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    #endif
886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  #endif /* CV_INLINE */
896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  #if (defined WIN32 || defined WIN64) && defined CVAPI_EXPORTS
916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    #define CV_EXPORTS __declspec(dllexport)
926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  #else
936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    #define CV_EXPORTS
946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  #endif
956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  #ifndef CVAPI
976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    #define CVAPI(rettype) CV_EXTERN_C CV_EXPORTS rettype CV_CDECL
986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  #endif
996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif // SKIP_INCLUDES
1016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#if defined(_CH_)
1036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  #pragma package <chopencv>
1046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  #include <chdl.h>
1056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  LOAD_CHDL(highgui)
1066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif
1076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifdef __cplusplus
1096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  extern "C" {
1106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif /* __cplusplus */
1116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_EVENT_MOUSEMOVE      0
1136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_EVENT_LBUTTONDOWN    1
1146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_EVENT_RBUTTONDOWN    2
1156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_EVENT_MBUTTONDOWN    3
1166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_EVENT_LBUTTONUP      4
1176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_EVENT_RBUTTONUP      5
1186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_EVENT_MBUTTONUP      6
1196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_EVENT_LBUTTONDBLCLK  7
1206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_EVENT_RBUTTONDBLCLK  8
1216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_EVENT_MBUTTONDBLCLK  9
1226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_EVENT_FLAG_LBUTTON   1
1246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_EVENT_FLAG_RBUTTON   2
1256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_EVENT_FLAG_MBUTTON   4
1266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_EVENT_FLAG_CTRLKEY   8
1276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_EVENT_FLAG_SHIFTKEY  16
1286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_EVENT_FLAG_ALTKEY    32
1296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* 8bit, color or not */
1326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_LOAD_IMAGE_UNCHANGED  -1
1336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* 8bit, gray */
1346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_LOAD_IMAGE_GRAYSCALE   0
1356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* ?, color */
1366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_LOAD_IMAGE_COLOR       1
1376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* any depth, ? */
1386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_LOAD_IMAGE_ANYDEPTH    2
1396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* ?, any color */
1406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_LOAD_IMAGE_ANYCOLOR    4
1416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* load image from file
1436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  iscolor can be a combination of above flags where CV_LOAD_IMAGE_UNCHANGED
1446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  overrides the other flags
1456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  using CV_LOAD_IMAGE_ANYCOLOR alone is equivalent to CV_LOAD_IMAGE_UNCHANGED
1466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  unless CV_LOAD_IMAGE_ANYDEPTH is specified images are converted to 8bit
1476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*/
1486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(IplImage*) cvLoadImage( const char* filename, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR));
1496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvMat*) cvLoadImageM( const char* filename, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR));
1506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* save image to file */
1526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) cvSaveImage( const char* filename, const CvArr* image );
1536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CVTIMG_FLIP      1
1556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CVTIMG_SWAP_RB   2
1566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* utility function: convert one image to another with optional vertical flip */
1576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvConvertImage( const CvArr* src, CvArr* dst, int flags CV_DEFAULT(0));
1586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* wait for key event infinitely (delay<=0) or for "delay" milliseconds */
1606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) cvWaitKey(int delay CV_DEFAULT(0));
1616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\
1646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*                         Working with Video Files and Cameras                           *
1656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/
1666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* "black box" capture structure */
1686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvCapture CvCapture;
1696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* start capturing frames from video file */
1716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvCapture*) cvCreateSocketCapture( const char *address, const char* port, int width, int height );
1726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* grab a frame, return 1 on success, 0 on fail.
1746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  this function is thought to be fast               */
1756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) cvGrabFrame( CvCapture* capture );
1766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* get the frame grabbed with cvGrabFrame(..)
1786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  This function may apply some frame processing like
1796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  frame decompression, flipping etc.
1806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  !!!DO NOT RELEASE or MODIFY the retrieved frame!!! */
1816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(IplImage*) cvRetrieveFrame( CvCapture* capture );
1826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Just a combination of cvGrabFrame and cvRetrieveFrame
1846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   !!!DO NOT RELEASE or MODIFY the retrieved frame!!!      */
1856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(IplImage*) cvQueryFrame( CvCapture* capture );
1866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* stop capturing/reading and free resources */
1886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvReleaseCapture( CvCapture** capture );
1896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CAP_PROP_POS_MSEC       0
1916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CAP_PROP_POS_FRAMES     1
1926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CAP_PROP_POS_AVI_RATIO  2
1936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CAP_PROP_FRAME_WIDTH    3
1946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CAP_PROP_FRAME_HEIGHT   4
1956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CAP_PROP_FPS            5
1966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CAP_PROP_FOURCC         6
1976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CAP_PROP_FRAME_COUNT    7
1986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CAP_PROP_FORMAT         8
1996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CAP_PROP_MODE           9
2006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CAP_PROP_BRIGHTNESS    10
2016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CAP_PROP_CONTRAST      11
2026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CAP_PROP_SATURATION    12
2036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CAP_PROP_HUE           13
2046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CAP_PROP_GAIN          14
2056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CAP_PROP_CONVERT_RGB   15
2066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* retrieve or set capture properties */
2096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(double) cvGetCaptureProperty( CvCapture* capture, int property_id );
2106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int)    cvSetCaptureProperty( CvCapture* capture, int property_id, double value );
2116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\
2136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*                              Obsolete functions/synonyms                               *
2146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/
2156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifndef HIGHGUI_NO_BACKWARD_COMPATIBILITY
2176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    #define HIGHGUI_BACKWARD_COMPATIBILITY
2186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif
2196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifdef HIGHGUI_BACKWARD_COMPATIBILITY
2216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define cvCaptureFromFile cvCreateFileCapture
2236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define cvCaptureFromCAM cvCreateCameraCapture
2246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define cvCaptureFromAVI cvCaptureFromFile
2256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define cvCreateAVIWriter cvCreateVideoWriter
2266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define cvWriteToAVI cvWriteFrame
2276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define cvAddSearchPath(path)
2286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define cvvInitSystem cvInitSystem
2296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define cvvNamedWindow cvNamedWindow
2306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define cvvResizeWindow cvResizeWindow
2316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define cvvDestroyWindow cvDestroyWindow
2326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define cvvCreateTrackbar cvCreateTrackbar
2336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define cvvLoadImage(name) cvLoadImage((name),1)
2346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define cvvSaveImage cvSaveImage
2356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define cvvAddSearchPath cvAddSearchPath
2366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define cvvWaitKey(name) cvWaitKey(0)
2376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define cvvWaitKeyEx(name,delay) cvWaitKey(delay)
2386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define cvvConvertImage cvConvertImage
2396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define HG_AUTOSIZE CV_WINDOW_AUTOSIZE
2406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define set_preprocess_func cvSetPreprocessFuncWin32
2416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define set_postprocess_func cvSetPostprocessFuncWin32
2426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifdef WIN32
2446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef int (CV_CDECL * CvWin32WindowCallback)(HWND, UINT, WPARAM, LPARAM, int*);
2466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvSetPreprocessFuncWin32( CvWin32WindowCallback on_preprocess );
2476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvSetPostprocessFuncWin32( CvWin32WindowCallback on_postprocess );
2486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE int iplWidth( const IplImage* img );
2506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE int iplWidth( const IplImage* img )
2516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
2526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    return !img ? 0 : !img->roi ? img->width : img->roi->width;
2536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}
2546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE int iplHeight( const IplImage* img );
2566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE int iplHeight( const IplImage* img )
2576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
2586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    return !img ? 0 : !img->roi ? img->height : img->roi->height;
2596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}
2606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif
2626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif /* obsolete functions */
2646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* For use with Win32 */
2666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifdef WIN32
2676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE RECT NormalizeRect( RECT r );
2696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE RECT NormalizeRect( RECT r )
2706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
2716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int t;
2726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    if( r.left > r.right )
2746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    {
2756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn        t = r.left;
2766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn        r.left = r.right;
2776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn        r.right = t;
2786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    }
2796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    if( r.top > r.bottom )
2816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    {
2826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn        t = r.top;
2836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn        r.top = r.bottom;
2846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn        r.bottom = t;
2856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    }
2866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    return r;
2886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}
2896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE CvRect RectToCvRect( RECT sr );
2916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE CvRect RectToCvRect( RECT sr )
2926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
2936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    sr = NormalizeRect( sr );
2946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    return cvRect( sr.left, sr.top, sr.right - sr.left, sr.bottom - sr.top );
2956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}
2966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE RECT CvRectToRect( CvRect sr );
2986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE RECT CvRectToRect( CvRect sr )
2996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
3006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    RECT dr;
3016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    dr.left = sr.x;
3026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    dr.top = sr.y;
3036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    dr.right = sr.x + sr.width;
3046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    dr.bottom = sr.y + sr.height;
3056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    return dr;
3076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}
3086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE IplROI RectToROI( RECT r );
3106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE IplROI RectToROI( RECT r )
3116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
3126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    IplROI roi;
3136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    r = NormalizeRect( r );
3146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    roi.xOffset = r.left;
3156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    roi.yOffset = r.top;
3166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    roi.width = r.right - r.left;
3176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    roi.height = r.bottom - r.top;
3186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    roi.coi = 0;
3196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    return roi;
3216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}
3226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif /* WIN32 */
3246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifdef __cplusplus
3266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}  /* end of extern "C" */
3276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif /* __cplusplus */
3286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#if defined __cplusplus && (!defined WIN32 || !defined (__GNUC__)) && !defined CV_NO_CVV_IMAGE
3316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CImage CvvImage
3336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* CvvImage class definition */
3356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennclass CV_EXPORTS CvvImage
3366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
3376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennpublic:
3386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    CvvImage();
3396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    virtual ~CvvImage();
3406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    /* Create image (BGR or grayscale) */
3426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    virtual bool  Create( int width, int height, int bits_per_pixel, int image_origin = 0 );
3436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    /* Load image from specified file */
3456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    virtual bool  Load( const char* filename, int desired_color = 1 );
3466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    /* Load rectangle from the file */
3486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    virtual bool  LoadRect( const char* filename,
3496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            int desired_color, CvRect r );
3506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifdef WIN32
3526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    virtual bool  LoadRect( const char* filename,
3536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            int desired_color, RECT r )
3546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    {
3556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn        return LoadRect( filename, desired_color,
3566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                         cvRect( r.left, r.top, r.right - r.left, r.bottom - r.top ));
3576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    }
3586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif
3596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    /* Save entire image to specified file. */
3616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    virtual bool  Save( const char* filename );
3626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    /* Get copy of input image ROI */
3646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    virtual void  CopyOf( CvvImage& image, int desired_color = -1 );
3656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    virtual void  CopyOf( IplImage* img, int desired_color = -1 );
3666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    IplImage* GetImage() { return m_img; };
3686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    virtual void  Destroy(void);
3696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    /* width and height of ROI */
3716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int Width() { return !m_img ? 0 : !m_img->roi ? m_img->width : m_img->roi->width; };
3726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int Height() { return !m_img ? 0 : !m_img->roi ? m_img->height : m_img->roi->height;};
3736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int Bpp() { return m_img ? (m_img->depth & 255)*m_img->nChannels : 0; };
3746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    virtual void  Fill( int color );
3766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennprotected:
3796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    IplImage*  m_img;
3816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn};
3826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif /* __cplusplus */
3846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif /* _HIGH_GUI_ */
386