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 * Cameras video capture using OpenCV library. 33 * 34 * Authors: 35 * Nicolas Melchior 36 * 37 *****************************************************************************/ 38 39 /*! 40 \file vpOpenCVGrabber.h 41 \brief class for cameras video capture using OpenCV library. 42 */ 43 44 #ifndef vpOpenCVGrabber_h 45 #define vpOpenCVGrabber_h 46 47 #include <visp3/core/vpConfig.h> 48 49 #if (defined(VISP_HAVE_OPENCV) && (VISP_HAVE_OPENCV_VERSION < 0x020408)) 50 51 #if VISP_HAVE_OPENCV_VERSION >= 0x020101 52 #include <opencv2/highgui/highgui.hpp> 53 #else 54 #include <highgui.h> 55 #endif 56 57 #include <visp3/core/vpFrameGrabber.h> 58 #include <visp3/core/vpImage.h> 59 #include <visp3/core/vpRGBa.h> 60 61 /*! 62 \class vpOpenCVGrabber 63 64 \ingroup group_sensor_camera 65 66 \brief Class for cameras video capture using OpenCV library. 67 \deprecated This class is deprecated can only be used with OpenCV < 2.4.8. 68 69 \note Instead of using this class, it is also possible to grab images using 70 OpenCV library by using directly OpenCV cv::VideoCapture class. The following 71 code corresponding to tutorial-grabber-opencv.cpp shows how to grab images in 72 a cv::Mat structure and then convert OpenCV images in ViSP images. \include 73 tutorial-grabber-opencv.cpp The one in grabOpencv.cpp gives an other example. 74 75 The code below shows how to grab and 76 display images using this class. 77 \code 78 #include <visp3/gui/vpDisplayOpenCV.h> 79 #include <visp3/sensor/vpOpenCVGrabber.h> 80 81 int main() 82 { 83 #if defined(VISP_HAVE_OPENCV) && (VISP_HAVE_OPENCV_VERSION < 0x020408) 84 try { 85 vpImage<unsigned char> I; 86 87 vpOpenCVGrabber g; 88 g.open(I); 89 90 std::cout << "Image size: " << I.getWidth() << " " << I.getHeight() << std::endl; 91 vpDisplayOpenCV d(I); 92 93 while(1) { 94 g.acquire(I); 95 vpDisplay::display(I); 96 vpDisplay::flush(I); 97 if (vpDisplay::getClick(I, false)) 98 break; 99 } 100 } 101 catch(const vpException &e) { 102 std::cout << "Catch an exception: " << e << std::endl; 103 } 104 #endif 105 } 106 \endcode 107 */ 108 class VISP_EXPORT vpOpenCVGrabber : public vpFrameGrabber 109 { 110 private: 111 CvCapture *capture; 112 int DeviceType; 113 bool flip; 114 115 public: 116 vpOpenCVGrabber(); 117 virtual ~vpOpenCVGrabber(); 118 119 void open(); 120 void open(vpImage<unsigned char> &I); 121 void open(vpImage<vpRGBa> &I); 122 123 void acquire(vpImage<unsigned char> &I); 124 void acquire(vpImage<vpRGBa> &I); 125 IplImage *acquire(); 126 127 void close(); 128 129 void getFramerate(double &framerate); 130 void setFramerate(const double framerate); 131 132 void setWidth(unsigned int width); 133 void setHeight(unsigned int height); 134 135 void setDeviceType(int type); 136 137 void setFlip(bool flipType); 138 }; 139 140 #endif 141 #endif 142