diff options
Diffstat (limited to 'otherlibs/highgui/highgui.h')
-rw-r--r-- | otherlibs/highgui/highgui.h | 385 |
1 files changed, 385 insertions, 0 deletions
diff --git a/otherlibs/highgui/highgui.h b/otherlibs/highgui/highgui.h new file mode 100644 index 0000000..1f35a1f --- /dev/null +++ b/otherlibs/highgui/highgui.h @@ -0,0 +1,385 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// Intel License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of Intel Corporation may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef _HIGH_GUI_ +#define _HIGH_GUI_ + +#ifndef SKIP_INCLUDES + + #include "cxcore.h" + #if defined WIN32 || defined WIN64 + #include <windows.h> + #endif + +#else // SKIP_INCLUDES + + #if defined WIN32 || defined WIN64 + #define CV_CDECL __cdecl + #define CV_STDCALL __stdcall + #else + #define CV_CDECL + #define CV_STDCALL + #endif + + #ifndef CV_EXTERN_C + #ifdef __cplusplus + #define CV_EXTERN_C extern "C" + #define CV_DEFAULT(val) = val + #else + #define CV_EXTERN_C + #define CV_DEFAULT(val) + #endif + #endif + + #ifndef CV_EXTERN_C_FUNCPTR + #ifdef __cplusplus + #define CV_EXTERN_C_FUNCPTR(x) extern "C" { typedef x; } + #else + #define CV_EXTERN_C_FUNCPTR(x) typedef x + #endif + #endif + + #ifndef CV_INLINE + #if defined __cplusplus + #define CV_INLINE inline + #elif (defined WIN32 || defined WIN64) && !defined __GNUC__ + #define CV_INLINE __inline + #else + #define CV_INLINE static + #endif + #endif /* CV_INLINE */ + + #if (defined WIN32 || defined WIN64) && defined CVAPI_EXPORTS + #define CV_EXPORTS __declspec(dllexport) + #else + #define CV_EXPORTS + #endif + + #ifndef CVAPI + #define CVAPI(rettype) CV_EXTERN_C CV_EXPORTS rettype CV_CDECL + #endif + +#endif // SKIP_INCLUDES + +#if defined(_CH_) + #pragma package <chopencv> + #include <chdl.h> + LOAD_CHDL(highgui) +#endif + +#ifdef __cplusplus + extern "C" { +#endif /* __cplusplus */ + +#define CV_EVENT_MOUSEMOVE 0 +#define CV_EVENT_LBUTTONDOWN 1 +#define CV_EVENT_RBUTTONDOWN 2 +#define CV_EVENT_MBUTTONDOWN 3 +#define CV_EVENT_LBUTTONUP 4 +#define CV_EVENT_RBUTTONUP 5 +#define CV_EVENT_MBUTTONUP 6 +#define CV_EVENT_LBUTTONDBLCLK 7 +#define CV_EVENT_RBUTTONDBLCLK 8 +#define CV_EVENT_MBUTTONDBLCLK 9 + +#define CV_EVENT_FLAG_LBUTTON 1 +#define CV_EVENT_FLAG_RBUTTON 2 +#define CV_EVENT_FLAG_MBUTTON 4 +#define CV_EVENT_FLAG_CTRLKEY 8 +#define CV_EVENT_FLAG_SHIFTKEY 16 +#define CV_EVENT_FLAG_ALTKEY 32 + + +/* 8bit, color or not */ +#define CV_LOAD_IMAGE_UNCHANGED -1 +/* 8bit, gray */ +#define CV_LOAD_IMAGE_GRAYSCALE 0 +/* ?, color */ +#define CV_LOAD_IMAGE_COLOR 1 +/* any depth, ? */ +#define CV_LOAD_IMAGE_ANYDEPTH 2 +/* ?, any color */ +#define CV_LOAD_IMAGE_ANYCOLOR 4 + +/* load image from file + iscolor can be a combination of above flags where CV_LOAD_IMAGE_UNCHANGED + overrides the other flags + using CV_LOAD_IMAGE_ANYCOLOR alone is equivalent to CV_LOAD_IMAGE_UNCHANGED + unless CV_LOAD_IMAGE_ANYDEPTH is specified images are converted to 8bit +*/ +CVAPI(IplImage*) cvLoadImage( const char* filename, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR)); +CVAPI(CvMat*) cvLoadImageM( const char* filename, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR)); + +/* save image to file */ +CVAPI(int) cvSaveImage( const char* filename, const CvArr* image ); + +#define CV_CVTIMG_FLIP 1 +#define CV_CVTIMG_SWAP_RB 2 +/* utility function: convert one image to another with optional vertical flip */ +CVAPI(void) cvConvertImage( const CvArr* src, CvArr* dst, int flags CV_DEFAULT(0)); + +/* wait for key event infinitely (delay<=0) or for "delay" milliseconds */ +CVAPI(int) cvWaitKey(int delay CV_DEFAULT(0)); + + +/****************************************************************************************\ +* Working with Video Files and Cameras * +\****************************************************************************************/ + +/* "black box" capture structure */ +typedef struct CvCapture CvCapture; + +/* start capturing frames from video file */ +CVAPI(CvCapture*) cvCreateSocketCapture( const char *address, const char* port, int width, int height ); + +/* grab a frame, return 1 on success, 0 on fail. + this function is thought to be fast */ +CVAPI(int) cvGrabFrame( CvCapture* capture ); + +/* get the frame grabbed with cvGrabFrame(..) + This function may apply some frame processing like + frame decompression, flipping etc. + !!!DO NOT RELEASE or MODIFY the retrieved frame!!! */ +CVAPI(IplImage*) cvRetrieveFrame( CvCapture* capture ); + +/* Just a combination of cvGrabFrame and cvRetrieveFrame + !!!DO NOT RELEASE or MODIFY the retrieved frame!!! */ +CVAPI(IplImage*) cvQueryFrame( CvCapture* capture ); + +/* stop capturing/reading and free resources */ +CVAPI(void) cvReleaseCapture( CvCapture** capture ); + +#define CV_CAP_PROP_POS_MSEC 0 +#define CV_CAP_PROP_POS_FRAMES 1 +#define CV_CAP_PROP_POS_AVI_RATIO 2 +#define CV_CAP_PROP_FRAME_WIDTH 3 +#define CV_CAP_PROP_FRAME_HEIGHT 4 +#define CV_CAP_PROP_FPS 5 +#define CV_CAP_PROP_FOURCC 6 +#define CV_CAP_PROP_FRAME_COUNT 7 +#define CV_CAP_PROP_FORMAT 8 +#define CV_CAP_PROP_MODE 9 +#define CV_CAP_PROP_BRIGHTNESS 10 +#define CV_CAP_PROP_CONTRAST 11 +#define CV_CAP_PROP_SATURATION 12 +#define CV_CAP_PROP_HUE 13 +#define CV_CAP_PROP_GAIN 14 +#define CV_CAP_PROP_CONVERT_RGB 15 + + +/* retrieve or set capture properties */ +CVAPI(double) cvGetCaptureProperty( CvCapture* capture, int property_id ); +CVAPI(int) cvSetCaptureProperty( CvCapture* capture, int property_id, double value ); + +/****************************************************************************************\ +* Obsolete functions/synonyms * +\****************************************************************************************/ + +#ifndef HIGHGUI_NO_BACKWARD_COMPATIBILITY + #define HIGHGUI_BACKWARD_COMPATIBILITY +#endif + +#ifdef HIGHGUI_BACKWARD_COMPATIBILITY + +#define cvCaptureFromFile cvCreateFileCapture +#define cvCaptureFromCAM cvCreateCameraCapture +#define cvCaptureFromAVI cvCaptureFromFile +#define cvCreateAVIWriter cvCreateVideoWriter +#define cvWriteToAVI cvWriteFrame +#define cvAddSearchPath(path) +#define cvvInitSystem cvInitSystem +#define cvvNamedWindow cvNamedWindow +#define cvvResizeWindow cvResizeWindow +#define cvvDestroyWindow cvDestroyWindow +#define cvvCreateTrackbar cvCreateTrackbar +#define cvvLoadImage(name) cvLoadImage((name),1) +#define cvvSaveImage cvSaveImage +#define cvvAddSearchPath cvAddSearchPath +#define cvvWaitKey(name) cvWaitKey(0) +#define cvvWaitKeyEx(name,delay) cvWaitKey(delay) +#define cvvConvertImage cvConvertImage +#define HG_AUTOSIZE CV_WINDOW_AUTOSIZE +#define set_preprocess_func cvSetPreprocessFuncWin32 +#define set_postprocess_func cvSetPostprocessFuncWin32 + +#ifdef WIN32 + +typedef int (CV_CDECL * CvWin32WindowCallback)(HWND, UINT, WPARAM, LPARAM, int*); +CVAPI(void) cvSetPreprocessFuncWin32( CvWin32WindowCallback on_preprocess ); +CVAPI(void) cvSetPostprocessFuncWin32( CvWin32WindowCallback on_postprocess ); + +CV_INLINE int iplWidth( const IplImage* img ); +CV_INLINE int iplWidth( const IplImage* img ) +{ + return !img ? 0 : !img->roi ? img->width : img->roi->width; +} + +CV_INLINE int iplHeight( const IplImage* img ); +CV_INLINE int iplHeight( const IplImage* img ) +{ + return !img ? 0 : !img->roi ? img->height : img->roi->height; +} + +#endif + +#endif /* obsolete functions */ + +/* For use with Win32 */ +#ifdef WIN32 + +CV_INLINE RECT NormalizeRect( RECT r ); +CV_INLINE RECT NormalizeRect( RECT r ) +{ + int t; + + if( r.left > r.right ) + { + t = r.left; + r.left = r.right; + r.right = t; + } + + if( r.top > r.bottom ) + { + t = r.top; + r.top = r.bottom; + r.bottom = t; + } + + return r; +} + +CV_INLINE CvRect RectToCvRect( RECT sr ); +CV_INLINE CvRect RectToCvRect( RECT sr ) +{ + sr = NormalizeRect( sr ); + return cvRect( sr.left, sr.top, sr.right - sr.left, sr.bottom - sr.top ); +} + +CV_INLINE RECT CvRectToRect( CvRect sr ); +CV_INLINE RECT CvRectToRect( CvRect sr ) +{ + RECT dr; + dr.left = sr.x; + dr.top = sr.y; + dr.right = sr.x + sr.width; + dr.bottom = sr.y + sr.height; + + return dr; +} + +CV_INLINE IplROI RectToROI( RECT r ); +CV_INLINE IplROI RectToROI( RECT r ) +{ + IplROI roi; + r = NormalizeRect( r ); + roi.xOffset = r.left; + roi.yOffset = r.top; + roi.width = r.right - r.left; + roi.height = r.bottom - r.top; + roi.coi = 0; + + return roi; +} + +#endif /* WIN32 */ + +#ifdef __cplusplus +} /* end of extern "C" */ +#endif /* __cplusplus */ + + +#if defined __cplusplus && (!defined WIN32 || !defined (__GNUC__)) && !defined CV_NO_CVV_IMAGE + +#define CImage CvvImage + +/* CvvImage class definition */ +class CV_EXPORTS CvvImage +{ +public: + CvvImage(); + virtual ~CvvImage(); + + /* Create image (BGR or grayscale) */ + virtual bool Create( int width, int height, int bits_per_pixel, int image_origin = 0 ); + + /* Load image from specified file */ + virtual bool Load( const char* filename, int desired_color = 1 ); + + /* Load rectangle from the file */ + virtual bool LoadRect( const char* filename, + int desired_color, CvRect r ); + +#ifdef WIN32 + virtual bool LoadRect( const char* filename, + int desired_color, RECT r ) + { + return LoadRect( filename, desired_color, + cvRect( r.left, r.top, r.right - r.left, r.bottom - r.top )); + } +#endif + + /* Save entire image to specified file. */ + virtual bool Save( const char* filename ); + + /* Get copy of input image ROI */ + virtual void CopyOf( CvvImage& image, int desired_color = -1 ); + virtual void CopyOf( IplImage* img, int desired_color = -1 ); + + IplImage* GetImage() { return m_img; }; + virtual void Destroy(void); + + /* width and height of ROI */ + int Width() { return !m_img ? 0 : !m_img->roi ? m_img->width : m_img->roi->width; }; + int Height() { return !m_img ? 0 : !m_img->roi ? m_img->height : m_img->roi->height;}; + int Bpp() { return m_img ? (m_img->depth & 255)*m_img->nChannels : 0; }; + + virtual void Fill( int color ); + + +protected: + + IplImage* m_img; +}; + +#endif /* __cplusplus */ + +#endif /* _HIGH_GUI_ */ |