www.pudn.com > FacialFeature.rar > highgui.h
/*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_ #include "cv.h" #ifdef WIN32 #include#endif #if defined(_CH_) #pragma package #include LOAD_CHDL_CODE(highgui,Highgui) #endif #ifdef __cplusplus #define HIGHGUI_EXTERN_C extern "C" extern "C" { #else #define HIGHGUI_EXTERN_C #endif /* __cplusplus */ #if defined HIGHGUI_EXPORTS && defined WIN32 #define HIGHGUI_DLL_ENTRY __declspec(dllexport) #else #define HIGHGUI_DLL_ENTRY #endif #ifdef HIGHGUI_EXPORTS #define HIGHGUI_API HIGHGUI_EXTERN_C HIGHGUI_DLL_ENTRY #else #define HIGHGUI_API #endif /* HIGHGUI_DLLEXPORT */ /****************************************************************************************\ * Basic HighGUI functionality * \****************************************************************************************/ /* this function is used to set some external parameters in case of X Window */ HIGHGUI_API int cvInitSystem( int argc, char** argv ); #define CV_WINDOW_AUTOSIZE 1 /* create window */ HIGHGUI_API int cvNamedWindow( const char* name, int flags ); /* display image within window (highgui windows remember their content) */ HIGHGUI_API void cvShowImage( const char* name, const CvArr* image ); /* resize/move window */ HIGHGUI_API void cvResizeWindow( const char* name, int width, int height ); /* destroy window and all the trackers associated with it */ HIGHGUI_API void cvDestroyWindow( const char* name ); HIGHGUI_API void cvDestroyAllWindows(void); /* get native window handle (HWND in case of Win32 and Widget in case of X Window) */ HIGHGUI_API void* cvGetWindowHandle( const char* name ); /* get name of highgui window given its native handle */ HIGHGUI_API const char* cvGetWindowName( void* window_handle ); CV_EXTERN_C_FUNCPTR( void (*CvTrackbarCallback)(int pos) ); /* create trackbar and display it on top of given window, set callback */ HIGHGUI_API int cvCreateTrackbar( const char* trackbar_name, const char* window_name, int* value, int count, CvTrackbarCallback on_change ); /* retrieve or set trackbar position */ HIGHGUI_API int cvGetTrackbarPos( const char* trackbar_name, const char* window_name ); HIGHGUI_API void cvSetTrackbarPos( const char* trackbar_name, const char* window_name, int pos ); #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 CV_EXTERN_C_FUNCPTR( void (*CvMouseCallback )(int event, int x, int y, int flags) ); /* assign callback for mouse events */ HIGHGUI_API void cvSetMouseCallback( const char* window_name, CvMouseCallback on_mouse ); /*load image from file iscolor: >0 - output image is always color, 0 - output image is always grayscale, <0 - output image is color or grayscale dependending on the file */ HIGHGUI_API IplImage* cvLoadImage( const char* filename, int iscolor CV_DEFAULT(1)); /* save image to file */ HIGHGUI_API int cvSaveImage( const char* filename, const CvArr* image ); /* add folder to the image search path (used by cvLoadImage) */ HIGHGUI_API void cvAddSearchPath( const char* path ); /* utility function: convert one image to another with optional vertical flip */ HIGHGUI_API void cvConvertImage( const CvArr* src, CvArr* dst, int flip CV_DEFAULT(0)); /* wait for key event infinitely (delay<=0) or for "delay" milliseconds */ HIGHGUI_API int cvWaitKey(int delay CV_DEFAULT(0)); /****************************************************************************************\ * Working with AVIs and Cameras * \****************************************************************************************/ /* "black box" capture structure */ typedef struct CvCapture CvCapture; /* start capturing frames from AVI */ HIGHGUI_API CvCapture* cvCaptureFromAVI( const char* filename ); /* start capturing frames from camera */ HIGHGUI_API CvCapture* cvCaptureFromCAM( int index ); /*just grab frame, return 1 if success, 0 if fail this function is thought to be fast */ HIGHGUI_API int cvGrabFrame( CvCapture* capture ); /*get frame grabbed with cvGrabFrame(..) This function may apply some frame processing like frame decompression, flipping etc. !!!DO NOT RELEASE or MODIFY the retrieved frame!!! */ HIGHGUI_API IplImage* cvRetrieveFrame( CvCapture* capture ); /* Just successive call of cvGrabFrame and cvRetrieveFrame !!!DO NOT RELEASE or MODIFY the retrieved frame!!! */ HIGHGUI_API IplImage* cvQueryFrame( CvCapture* capture ); /* stop capturing/reading and free resources */ HIGHGUI_API 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 /* retrieve or set capture properties */ HIGHGUI_API double cvGetCaptureProperty( CvCapture* capture, int property_id ); HIGHGUI_API int cvSetCaptureProperty( CvCapture* capture, int property_id, double value ); /* "black box" AVI writer structure */ typedef struct CvAVIWriter CvAVIWriter; #define CV_FOURCC(c1,c2,c3,c4) \ (((c1)&255) + (((c2)&255)<<8) + (((c3)&255)<<16) + (((c4)&255)<<24)) /* initialize AVI writer */ HIGHGUI_API CvAVIWriter* cvCreateAVIWriter( const char* filename, int fourcc, double fps, CvSize frameSize ); /* write frame to AVI */ HIGHGUI_API int cvWriteToAVI( CvAVIWriter* writer, const IplImage* image ); /* close AVI writer */ HIGHGUI_API void cvReleaseAVIWriter( CvAVIWriter** writer ); /****************************************************************************************\ * Obsolete functions/synonyms * \****************************************************************************************/ #ifndef HIGHGUI_NO_BACKWARD_COMPATIBILITY #define HIGHGUI_BACKWARD_COMPATIBILITY #endif #ifdef HIGHGUI_BACKWARD_COMPATIBILITY #define cvvInitSystem cvInitSystem #define cvvNamedWindow cvNamedWindow #define cvvShowImage cvShowImage #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 #ifdef WIN32 CV_EXTERN_C_FUNCPTR( int (CV_CDECL * CvWin32WindowCallback) (HWND, UINT, WPARAM, LPARAM, int*)); HIGHGUI_API void set_preprocess_func( CvWin32WindowCallback on_preprocess ); HIGHGUI_API void set_postprocess_func( 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__)) #define CImage CvvImage /* CvvImage class definition */ class CvvImage { public: HIGHGUI_DLL_ENTRY CvvImage(); HIGHGUI_DLL_ENTRY virtual ~CvvImage(); /* Create image (BGR or grayscale) */ HIGHGUI_DLL_ENTRY virtual bool Create( int w, int h, int bpp, int origin = 0 ); /* Load image from specified file */ HIGHGUI_DLL_ENTRY virtual bool Load( const char* filename, int desired_color = 1 ); /* Load rectangle from the file */ HIGHGUI_DLL_ENTRY virtual bool LoadRect( const char* filename, int desired_color, CvRect r ); #ifdef WIN32 HIGHGUI_DLL_ENTRY 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. */ HIGHGUI_DLL_ENTRY virtual bool Save( const char* filename ); /* Get copy of input image ROI */ HIGHGUI_DLL_ENTRY virtual void CopyOf( CvvImage& image, int desired_color = -1 ); HIGHGUI_DLL_ENTRY virtual void CopyOf( IplImage* img, int desired_color = -1 ); IplImage* GetImage() { return m_img; }; HIGHGUI_DLL_ENTRY 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; }; HIGHGUI_DLL_ENTRY virtual void Fill( int color ); /* draw to highgui window */ HIGHGUI_DLL_ENTRY virtual void Show( const char* window ); #ifdef WIN32 /* draw part of image to the specified DC */ HIGHGUI_DLL_ENTRY virtual void Show( HDC dc, int x, int y, int w, int h, int from_x = 0, int from_y = 0 ); /* draw the current image ROI to the specified rectangle of the destination DC */ HIGHGUI_DLL_ENTRY virtual void DrawToHDC( HDC hDCDst, RECT* pDstRect ); #endif protected: IplImage* m_img; }; #endif /* __cplusplus */ #endif /* _HIGH_GUI_ */