/home/fwph/code/wurde/rde/utils/WURDECam.H

Go to the documentation of this file.
00001 #ifndef _WURDE_CAMERA_H
00002 #define _WURDE_CAMERA_H
00003 
00004 #include <opencv/cv.h>
00005 #include <vector>
00006 #include <string>
00007 #include <list>
00008 #include <Time.H>
00009 #include <map>
00010 #include <Logger.H>
00011 #include <ImageSource.H>
00012 
00013 namespace WURDEVision {
00014         
00015         void convert_yuv411_to_yuv24(IplImage *img, unsigned char *src);
00016         void convert_yuv422_to_yuv24(IplImage *img, unsigned char *src);
00017         void convert_yuv411_to_gray(IplImage *img, unsigned char *src);
00018         void convert_yuv422_to_gray(IplImage *img, unsigned char *src);
00019 
00020         struct Calibration {
00021                 int centerX;
00022                 int centerY;
00023                 double focalLength;
00024         };
00025         
00026         typedef enum {
00027                 ERROR_NOERROR= 0,
00028                 ERROR_UNSUPPORTED_IMAGE_TYPE,
00029                 ERROR_IMAGE_NOT_AVAILABLE,
00030                 ERROR_CAMERA_FAILURE
00031         } WURDECameraError;
00032 
00033         extern WURDECameraError g_wurdeCamErrno;
00040         //#warning Check enumerations with new releases of dc1394
00041         typedef enum {
00042                 ISO_SPEED_100= 0,
00043                 ISO_SPEED_200,
00044                 ISO_SPEED_400,
00045                 ISO_SPEED_800,
00046                 ISO_SPEED_1600,
00047                 ISO_SPEED_3200
00048         } WURDEVisionSpeed;
00049 
00050         typedef enum {
00051                 FRAMERATE_1_875= 32,
00052                 FRAMERATE_3_75,
00053                 FRAMERATE_7_5,
00054                 FRAMERATE_15,
00055                 FRAMERATE_30,
00056                 FRAMERATE_60,
00057                 FRAMERATE_120,
00058                 FRAMERATE_240
00059         } WURDEVisionFramerate;
00060 
00067         typedef enum {
00068                 VIDEO_MODE_160x120_YUV444= 64,
00069                 VIDEO_MODE_320x240_YUV422,
00070                 VIDEO_MODE_640x480_YUV411,
00071                 VIDEO_MODE_640x480_YUV422,
00072                 VIDEO_MODE_640x480_RGB8,
00073                 VIDEO_MODE_640x480_MONO8,
00074                 VIDEO_MODE_640x480_MONO16,
00075                 VIDEO_MODE_800x600_YUV422,
00076                 VIDEO_MODE_800x600_RGB8,
00077                 VIDEO_MODE_800x600_MONO8,
00078                 VIDEO_MODE_1024x768_YUV422,
00079                 VIDEO_MODE_1024x768_RGB8,
00080                 VIDEO_MODE_1024x768_MONO8,
00081                 VIDEO_MODE_800x600_MONO16,
00082                 VIDEO_MODE_1024x768_MONO16,
00083                 VIDEO_MODE_1280x960_YUV422,
00084                 VIDEO_MODE_1280x960_RGB8,
00085                 VIDEO_MODE_1280x960_MONO8,
00086                 VIDEO_MODE_1600x1200_YUV422,
00087                 VIDEO_MODE_1600x1200_RGB8,
00088                 VIDEO_MODE_1600x1200_MONO8,
00089                 VIDEO_MODE_1280x960_MONO16,
00090                 VIDEO_MODE_1600x1200_MONO16,
00091                 VIDEO_MODE_EXIF,
00092                 VIDEO_MODE_FORMAT7_0,
00093                 VIDEO_MODE_FORMAT7_1,
00094                 VIDEO_MODE_FORMAT7_2,
00095                 VIDEO_MODE_FORMAT7_3,
00096                 VIDEO_MODE_FORMAT7_4,
00097                 VIDEO_MODE_FORMAT7_5,
00098                 VIDEO_MODE_FORMAT7_6,
00099                 VIDEO_MODE_FORMAT7_7
00100         } WURDEVisionMode;
00101 
00102         
00113         class WURDECamera {
00114         public:
00115                 WURDECamera(std::string name, std::map<std::string,std::string> options){m_name=name; m_options=options;}
00116                 virtual ~WURDECamera(){}
00117                 virtual bool init()=0;
00118                 virtual bool startCapture()=0;
00119                 virtual void stopCapture()=0;
00120                 
00121                 std::string getName(){return m_name;}         
00122                 void setName(std::string value){m_name=value;}
00123                 bool haveCam(){ return m_haveCam;}
00127                 //              WURDE::Time getTimestamp(){return m_timestamp;}
00128 
00129                 virtual WURDE::WURDEImage captureYUV24(){WURDE::g_logerror << "Camera " << m_name << " does not support YUV24 capture." << std::endl; g_wurdeCamErrno=ERROR_UNSUPPORTED_IMAGE_TYPE;}
00130                 virtual WURDE::WURDEImage captureYUV422(){WURDE::g_logerror << "Camera " << m_name << " does not support YUV422 capture." << std::endl; g_wurdeCamErrno=ERROR_UNSUPPORTED_IMAGE_TYPE;}
00131                 virtual WURDE::WURDEImage captureGray(){WURDE::g_logerror << "Camera " << m_name << " does not support gray capture." << std::endl; g_wurdeCamErrno=ERROR_UNSUPPORTED_IMAGE_TYPE;}
00132                 virtual WURDE::WURDEImage captureRGB(){WURDE::g_logerror << "Camera " << m_name << " does not support RGB capture." << std::endl; g_wurdeCamErrno=ERROR_UNSUPPORTED_IMAGE_TYPE;} 
00133                 
00138                 virtual void resetFrame()=0;
00139                 
00143                 virtual void setFramerate(const WURDEVisionFramerate &value){m_framerate=value;}
00144                 
00148                 virtual void setMode(const WURDEVisionMode &value){m_mode=value;}
00149 
00154                 virtual void setSpeed(WURDEVisionSpeed value){m_speed=value;}
00155                 
00156                 virtual float getFramerate() const {return m_framerate;}
00157                 virtual WURDEVisionMode getMode() const {return m_mode;}
00158 
00159                 virtual WURDEVisionSpeed getSpeed() const{return m_speed;}
00160                 
00161                 
00166                 virtual unsigned int getBrightness()const{WURDE::g_logwarn << "getBrightness not supported." << std::endl; return 0;}
00167                 virtual unsigned int getExposure()const{WURDE::g_logwarn << "getExposure not supported." << std::endl; return 0;}
00168                 virtual unsigned int getSharpness()const{WURDE::g_logwarn << "getSharpness not supported." << std::endl; return 0;}
00169                 virtual unsigned int getHue()const{WURDE::g_logwarn << "getHue not supported." << std::endl; return 0;}
00170                 virtual unsigned int getSaturation()const{WURDE::g_logwarn << "getSaturation not supported." << std::endl; return 0;}
00171                 virtual unsigned int getGamma()const{WURDE::g_logwarn << "getGamma not supported." << std::endl; return 0;}
00172                 virtual unsigned int getShutter()const{WURDE::g_logwarn << "getShutter not supported." << std::endl; return 0;}
00173                 virtual unsigned int getGain()const{WURDE::g_logwarn << "getGain not supported." << std::endl; return 0;}
00174                 virtual unsigned int getIris()const{WURDE::g_logwarn << "getIris not supported." << std::endl; return 0;}
00175                 virtual unsigned int getFocus()const{WURDE::g_logwarn << "getFocus not supported." << std::endl; return 0;}
00176                 virtual unsigned int getZoom()const{WURDE::g_logwarn << "getZoom not supported." << std::endl; return 0;}             
00177                 virtual unsigned int getTriggerDelay()const{WURDE::g_logwarn << "getTriggerDelay not supported." << std::endl; return 0;}
00178                 virtual unsigned int getPan()const{WURDE::g_logwarn << "getPan not supported." << std::endl; return 0;}
00179                 virtual unsigned int getTilt()const{WURDE::g_logwarn << "getTilt not supported." << std::endl; return 0;}
00180                 virtual unsigned int getOpticalFilter()const{WURDE::g_logwarn << "getOpicalFilter not supported." << std::endl; return 0;}
00181                 
00182                 virtual bool setBrightness(const unsigned int &value){WURDE::g_logwarn << "setBrightness not supported" << std::endl; return false;}
00183                 virtual bool setExposure(const unsigned int &value){WURDE::g_logwarn << "setBrightness not supported" << std::endl; return false;}
00184                 virtual bool setSharpness(const unsigned int &value){WURDE::g_logwarn << "setBrightness not supported" << std::endl; return false;}
00185                 virtual bool setHue(const unsigned int &value){WURDE::g_logwarn << "setBrightness not supported" << std::endl; return false;}
00186                 virtual bool setSaturation(const unsigned int &value){WURDE::g_logwarn << "setBrightness not supported" << std::endl; return false;}
00187                 virtual bool setGamma(const unsigned int &value){WURDE::g_logwarn << "setBrightness not supported" << std::endl; return false;}
00188                 virtual bool setShutter(const unsigned int &value){WURDE::g_logwarn << "setBrightness not supported" << std::endl; return false;}
00189                 virtual bool setGain(const unsigned int &value){WURDE::g_logwarn << "setBrightness not supported" << std::endl; return false;}
00190                 virtual bool setIris(const unsigned int &value){WURDE::g_logwarn << "setBrightness not supported" << std::endl; return false;}
00191                 virtual bool setAutoIris(const bool &value){WURDE::g_logwarn << "setBrightness not supported" << std::endl; return false;}
00192                 virtual bool setFocus(const unsigned int &value){WURDE::g_logwarn << "setBrightness not supported" << std::endl; return false;}
00193                 virtual bool setTriggerMode(const unsigned int &value){WURDE::g_logwarn << "setBrightness not supported" << std::endl; return false;}
00194                 virtual bool setZoom(const unsigned int &value){WURDE::g_logwarn << "setBrightness not supported" << std::endl; return false;}
00195                 virtual bool setTriggerDelay(const unsigned int &value){WURDE::g_logwarn << "setBrightness not supported" << std::endl; return false;}
00196                 virtual bool setPan(const unsigned int &value){WURDE::g_logwarn << "setBrightness not supported" << std::endl; return false;}
00197                 virtual bool setTilt(const unsigned int &value){WURDE::g_logwarn << "setBrightness not supported" << std::endl; return false;}
00198                 virtual bool setOpticalFilter(const unsigned int &value){WURDE::g_logwarn << "setBrightness not supported" << std::endl; return false;}
00199                 
00200                 virtual void setCalibration(Calibration val){m_calib=val;}
00201                 virtual Calibration getCalibration() const {return m_calib;}           
00202                                      
00203         protected:              
00204                 std::string m_name;
00205                 std::map<std::string,std::string> m_options;
00206 
00207                 WURDEVisionFramerate m_framerate;
00208                 WURDEVisionMode m_mode;
00209                 WURDEVisionSpeed m_speed;
00210                 
00211                 bool m_haveCam;
00212                 bool m_haveFrame;
00213                 bool m_init;           
00214                 
00215                 Calibration m_calib;
00216                 
00217         };
00218         
00219 }
00220 
00221 static std::list< WURDEVision::WURDECamera * > _robotVision_global_cameraList;
00222 void _robotVision_global_cleanUpCameraList();
00223 
00224 #endif

Generated on Thu Feb 1 15:31:54 2007 for WURDE by  doxygen 1.5.1