/*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 #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 #include 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_ */