00001 /*M/////////////////////////////////////////////////////////////////////////////////////// 00002 // 00003 // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 00004 // 00005 // By downloading, copying, installing or using the software you agree to this license. 00006 // If you do not agree to this license, do not download, install, 00007 // copy or use the software. 00008 // 00009 // 00010 // License Agreement 00011 // For Open Source Computer Vision Library 00012 // 00013 // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. 00014 // Copyright (C) 2009, Willow Garage Inc., all rights reserved. 00015 // Third party copyrights are property of their respective owners. 00016 // 00017 // Redistribution and use in source and binary forms, with or without modification, 00018 // are permitted provided that the following conditions are met: 00019 // 00020 // * Redistribution's of source code must retain the above copyright notice, 00021 // this list of conditions and the following disclaimer. 00022 // 00023 // * Redistribution's in binary form must reproduce the above copyright notice, 00024 // this list of conditions and the following disclaimer in the documentation 00025 // and/or other materials provided with the distribution. 00026 // 00027 // * The name of the copyright holders may not be used to endorse or promote products 00028 // derived from this software without specific prior written permission. 00029 // 00030 // This software is provided by the copyright holders and contributors "as is" and 00031 // any express or implied warranties, including, but not limited to, the implied 00032 // warranties of merchantability and fitness for a particular purpose are disclaimed. 00033 // In no event shall the Intel Corporation or contributors be liable for any direct, 00034 // indirect, incidental, special, exemplary, or consequential damages 00035 // (including, but not limited to, procurement of substitute goods or services; 00036 // loss of use, data, or profits; or business interruption) however caused 00037 // and on any theory of liability, whether in contract, strict liability, 00038 // or tort (including negligence or otherwise) arising in any way out of 00039 // the use of this software, even if advised of the possibility of such damage. 00040 // 00041 //M*/ 00042 00043 #ifndef __OPENCV_HIGHGUI_HPP__ 00044 #define __OPENCV_HIGHGUI_HPP__ 00045 00046 #include "opencv2/core/core.hpp" 00047 #include "opencv2/highgui/highgui_c.h" 00048 00049 #ifdef __cplusplus 00050 00051 struct CvCapture; 00052 struct CvVideoWriter; 00053 00054 namespace cv 00055 { 00056 00057 enum { WINDOW_AUTOSIZE=1 }; 00058 00059 CV_EXPORTS_W void namedWindow( const string& winname, int flags=WINDOW_AUTOSIZE ); 00060 CV_EXPORTS_W void destroyWindow( const string& winname ); 00061 CV_EXPORTS_W void destroyAllWindows(); 00062 CV_EXPORTS_W int startWindowThread(); 00063 00064 CV_EXPORTS_W void setWindowProperty(const string& winname, int prop_id, double prop_value);//YV 00065 CV_EXPORTS_W double getWindowProperty(const string& winname, int prop_id);//YV 00066 00067 00068 //Only for Qt 00069 //------------------------ 00070 CV_EXPORTS CvFont fontQt(const string& nameFont, int pointSize=-1, 00071 Scalar color=Scalar::all(0), int weight=CV_FONT_NORMAL, 00072 int style=CV_STYLE_NORMAL, int spacing=0); 00073 CV_EXPORTS void addText( const Mat& img, const string& text, Point org, CvFont font); 00074 00075 CV_EXPORTS void displayOverlay(const string& winname, const string& text, int delayms); 00076 CV_EXPORTS void displayStatusBar(const string& winname, const string& text, int delayms); 00077 00078 typedef void (CV_CDECL *OpenGLCallback)(void* userdata); 00079 CV_EXPORTS void createOpenGLCallback(const string& winname, CvOpenGLCallback callbackOpenGL, void* userdata=0); 00080 00081 CV_EXPORTS void saveWindowParameters(const string& windowName); 00082 CV_EXPORTS void loadWindowParameters(const string& windowName); 00083 CV_EXPORTS int startLoop(int (*pt2Func)(int argc, char *argv[]), int argc, char* argv[]); 00084 CV_EXPORTS void stopLoop(); 00085 00086 typedef void (CV_CDECL *ButtonCallback)(int state, void* userdata); 00087 CV_EXPORTS int createButton( const string& bar_name, ButtonCallback on_change, 00088 void* userdata=NULL, int type=CV_PUSH_BUTTON, 00089 bool initial_button_state=0); 00090 //------------------------- 00091 00092 CV_EXPORTS_W void imshow( const string& winname, InputArray mat ); 00093 00094 typedef void (CV_CDECL *TrackbarCallback)(int pos, void* userdata); 00095 00096 CV_EXPORTS int createTrackbar( const string& trackbarname, const string& winname, 00097 int* value, int count, 00098 TrackbarCallback onChange=0, 00099 void* userdata=0); 00100 00101 CV_EXPORTS_W int getTrackbarPos( const string& trackbarname, const string& winname ); 00102 CV_EXPORTS_W void setTrackbarPos( const string& trackbarname, const string& winname, int pos ); 00103 00104 typedef void (*MouseCallback )(int event, int x, int y, int flags, void* param); 00105 00107 CV_EXPORTS void setMouseCallback( const string& windowName, MouseCallback onMouse, void* param=0); 00108 00109 CV_EXPORTS_W Mat imread( const string& filename, int flags=1 ); 00110 CV_EXPORTS_W bool imwrite( const string& filename, InputArray img, 00111 const vector<int>& params=vector<int>()); 00112 CV_EXPORTS_W Mat imdecode( InputArray buf, int flags ); 00113 CV_EXPORTS_W bool imencode( const string& ext, InputArray img, 00114 vector<uchar>& buf, 00115 const vector<int>& params=vector<int>()); 00116 00117 CV_EXPORTS_W int waitKey(int delay=0); 00118 00119 #ifndef CV_NO_VIDEO_CAPTURE_CPP_API 00120 00121 template<> void CV_EXPORTS Ptr<CvCapture>::delete_obj(); 00122 template<> void CV_EXPORTS Ptr<CvVideoWriter>::delete_obj(); 00123 00124 class CV_EXPORTS_W VideoCapture 00125 { 00126 public: 00127 CV_WRAP VideoCapture(); 00128 CV_WRAP VideoCapture(const string& filename); 00129 CV_WRAP VideoCapture(int device); 00130 00131 virtual ~VideoCapture(); 00132 CV_WRAP virtual bool open(const string& filename); 00133 CV_WRAP virtual bool open(int device); 00134 CV_WRAP virtual bool isOpened() const; 00135 CV_WRAP virtual void release(); 00136 00137 CV_WRAP virtual bool grab(); 00138 CV_WRAP virtual bool retrieve(CV_OUT Mat& image, int channel=0); 00139 virtual VideoCapture& operator >> (CV_OUT Mat& image); 00140 CV_WRAP virtual bool read(CV_OUT Mat& image); 00141 00142 CV_WRAP virtual bool set(int propId, double value); 00143 CV_WRAP virtual double get(int propId); 00144 00145 protected: 00146 Ptr<CvCapture> cap; 00147 }; 00148 00149 00150 class CV_EXPORTS_W VideoWriter 00151 { 00152 public: 00153 CV_WRAP VideoWriter(); 00154 CV_WRAP VideoWriter(const string& filename, int fourcc, double fps, 00155 Size frameSize, bool isColor=true); 00156 00157 virtual ~VideoWriter(); 00158 CV_WRAP virtual bool open(const string& filename, int fourcc, double fps, 00159 Size frameSize, bool isColor=true); 00160 CV_WRAP virtual bool isOpened() const; 00161 virtual VideoWriter& operator << (const Mat& image); 00162 CV_WRAP virtual void write(const Mat& image); 00163 00164 protected: 00165 Ptr<CvVideoWriter> writer; 00166 }; 00167 00168 #endif 00169 00170 } 00171 00172 #endif 00173 00174 #endif