1 /**************************************************************************** 2 * 3 * ViSP, open source Visual Servoing Platform software. 4 * Copyright (C) 2005 - 2019 by Inria. All rights reserved. 5 * 6 * This software is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 2 of the License, or 9 * (at your option) any later version. 10 * See the file LICENSE.txt at the root directory of this source 11 * distribution for additional information about the GNU GPL. 12 * 13 * For using ViSP with software that can not be combined with the GNU 14 * GPL, please contact Inria about acquiring a ViSP Professional 15 * Edition License. 16 * 17 * See http://visp.inria.fr for more information. 18 * 19 * This software was developed at: 20 * Inria Rennes - Bretagne Atlantique 21 * Campus Universitaire de Beaulieu 22 * 35042 Rennes Cedex 23 * France 24 * 25 * If you have questions regarding the use of this file, please contact 26 * Inria at visp@inria.fr 27 * 28 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 29 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 30 * 31 * Description: 32 * IDS uEye interface. 33 * 34 *****************************************************************************/ 35 36 #ifndef _vpUeyeGrabber_h_ 37 #define _vpUeyeGrabber_h_ 38 39 #include <visp3/core/vpConfig.h> 40 #include <visp3/core/vpImage.h> 41 42 #ifdef VISP_HAVE_UEYE 43 44 /*! 45 * \class vpUeyeGrabber 46 * \ingroup group_sensor_camera 47 * 48 * Allows to grab images from an IDS camera using uEye SDK. 49 * 50 * This class was tested with IDS UI328xCP-C and UI328xCP-C camera models. 51 * 52 * By default, the first connected camera is the active one. 53 * The following code shows how to get information about all the connected cameras 54 * (index, id, model, serial number): 55 * \snippet tutorial-grabber-ids-ueye.cpp List camera info 56 * 57 * If multiple cameras are connected, to select a specific one use the following code: 58 * \snippet tutorial-grabber-ids-ueye.cpp Active camera info 59 * 60 * Create an image container, either for gray level or color images: 61 * \snippet tutorial-grabber-ids-ueye.cpp Create image 62 * 63 * Then call open() to connect the active camera: 64 * \snippet tutorial-grabber-ids-ueye.cpp Open connection 65 * 66 * From here you can modify camera default settings, 67 * - either by loading camera parameters from a config file created by `ueyedemo` binary: 68 * \snippet tutorial-grabber-ids-ueye.cpp Load settings from file 69 * - either using setter like setColorMode(), setExposure(), setFrameRate(), setGain(), setSubsampling(), setWhiteBalance() 70 * 71 * Depending on the settings, you may update image container size, especially if you want to create a window to display the image: 72 * \snippet tutorial-grabber-ids-ueye.cpp Update image size 73 * 74 * Now you can create an infinite loop to grab images: 75 * \code 76 * while (1) { 77 * g.acquire(I); 78 * } 79 * \endcode 80 */ 81 class VISP_EXPORT vpUeyeGrabber 82 { 83 public: 84 vpUeyeGrabber(); 85 virtual ~vpUeyeGrabber(); 86 87 void acquire(vpImage<unsigned char> &I, double *timestamp_camera = NULL, std::string *timestamp_system = NULL); 88 void acquire(vpImage<vpRGBa> &I, double *timestamp_camera = NULL, std::string *timestamp_system = NULL); 89 90 std::string getActiveCameraModel() const; 91 std::string getActiveCameraSerialNumber() const; 92 93 std::vector<unsigned int> getCameraIDList() const; 94 std::vector<std::string> getCameraModelList() const; 95 std::vector<std::string> getCameraSerialNumberList() const; 96 double getFramerate() const; 97 unsigned int getFrameHeight() const; 98 unsigned int getFrameWidth() const; 99 100 bool isConnected() const; 101 void loadParameters(const std::string &filename); 102 void open(vpImage<unsigned char> &I); 103 void open(vpImage<vpRGBa> &I); 104 105 bool setActiveCamera(unsigned int cam_index); 106 bool setColorMode(const std::string &color_mode); 107 bool setExposure(bool auto_exposure, double exposure_ms = -1); 108 bool setFrameRate(bool auto_frame_rate, double manual_frame_rate_hz = -1); 109 bool setGain(bool auto_gain, int master_gain = -1, bool gain_boost = false); 110 void setSubsampling(int factor); 111 void setVerbose(bool verbose); 112 void setWhiteBalance(bool auto_wb); 113 114 private: 115 vpUeyeGrabber(const vpUeyeGrabber &); // noncopyable 116 vpUeyeGrabber &operator=(const vpUeyeGrabber &); // 117 118 class vpUeyeGrabberImpl; 119 vpUeyeGrabberImpl *m_impl; 120 }; 121 122 #endif 123 #endif 124