ViSP  2.8.0
vpDiskGrabber.cpp
1 /****************************************************************************
2  *
3  * $Id: vpDiskGrabber.cpp 4056 2013-01-05 13:04:42Z fspindle $
4  *
5  * This file is part of the ViSP software.
6  * Copyright (C) 2005 - 2013 by INRIA. All rights reserved.
7  *
8  * This software is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * ("GPL") version 2 as published by the Free Software Foundation.
11  * See the file LICENSE.txt at the root directory of this source
12  * distribution for additional information about the GNU GPL.
13  *
14  * For using ViSP with software that can not be combined with the GNU
15  * GPL, please contact INRIA about acquiring a ViSP Professional
16  * Edition License.
17  *
18  * See http://www.irisa.fr/lagadic/visp/visp.html for more information.
19  *
20  * This software was developed at:
21  * INRIA Rennes - Bretagne Atlantique
22  * Campus Universitaire de Beaulieu
23  * 35042 Rennes Cedex
24  * France
25  * http://www.irisa.fr/lagadic
26  *
27  * If you have questions regarding the use of this file, please contact
28  * INRIA at visp@inria.fr
29  *
30  * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
31  * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
32  *
33  *
34  * Description:
35  * Disk framegrabber.
36  *
37  * Authors:
38  * Eric Marchand
39  *
40  *****************************************************************************/
41 
42 
43 #include <visp/vpDiskGrabber.h>
44 
45 
50 {
51  setDirectory("/tmp");
52  setBaseName("I");
53  setImageNumber(0);
54  setStep(1);
55  setNumberOfZero(0);
56  setExtension("pgm");
57 
58  init = false;
59  useGenericName = false;
60 }
61 
62 
63 vpDiskGrabber::vpDiskGrabber(const char *genericName)
64 {
65  strcpy(this->genericName, genericName);
66  useGenericName = true;
67 }
68 
69 
81 vpDiskGrabber::vpDiskGrabber(const char *dir, const char *basename,
82  long number,
83  int step, unsigned int noz,
84  const char *ext)
85 {
86  setDirectory(dir);
87  setBaseName(basename);
88  setImageNumber(number);
89  setStep(step);
90  setNumberOfZero(noz);
91  setExtension(ext);
92 
93  init = false;
94  useGenericName = false;
95 }
96 
97 void
99 {
100  long first_number = getImageNumber();
101 
102  vpDEBUG_TRACE(2, "first %ld", first_number);
103 
104  acquire(I);
105 
106  setImageNumber(first_number);
107 
108  width = I.getWidth();
109  height = I.getHeight();
110 
111  init = true;
112 }
113 
119 void
121 {
122  // First we save the image number, so that it can be reaffected after the
123  // acquisition. That means that the first image is readed twice
124  long first_number = getImageNumber();
125  vpDEBUG_TRACE(2, "first %ld", first_number);
126 
127  acquire(I);
128 
129  setImageNumber(first_number);
130 
131  width = I.getWidth();
132  height = I.getHeight();
133 
134  init = true;
135 }
136 
142 void
144 {
145  // First we save the image number, so that it can be reaffected after the
146  // acquisition. That means that the first image is readed twice
147  long first_number = getImageNumber();
148  vpDEBUG_TRACE(2, "first %ld", first_number);
149 
150  acquire(I);
151 
152  setImageNumber(first_number);
153 
154  width = I.getWidth();
155  height = I.getHeight();
156 
157  init = true;
158 }
159 
166 void
168 {
169 
170  char name[FILENAME_MAX] ;
171 
172  if(useGenericName)
173  sprintf(name,genericName,image_number) ;
174  else
175  sprintf(name,"%s/%s%0*ld.%s",directory,base_name,number_of_zero,image_number,extension) ;
176 
177  image_number += image_step ;
178 
179  vpDEBUG_TRACE(2, "load: %s\n", name);
180 
181  vpImageIo::read(I, name) ;
182 
183  width = I.getWidth();
184  height = I.getHeight();
185 }
186 
193 void
195 {
196 
197  char name[FILENAME_MAX] ;
198 
199  if(useGenericName)
200  sprintf(name,genericName,image_number) ;
201  else
202  sprintf(name,"%s/%s%0*ld.%s",directory,base_name,number_of_zero,image_number,extension) ;
203 
204  image_number += image_step ;
205 
206  vpDEBUG_TRACE(2, "load: %s\n", name);
207 
208  vpImageIo::read(I, name) ;
209 
210  width = I.getWidth();
211  height = I.getHeight();
212 
213 }
214 
221 void
223 {
224 
225  char name[FILENAME_MAX] ;
226 
227  if(useGenericName)
228  sprintf(name,genericName,image_number) ;
229  else
230  sprintf(name,"%s/%s%0*ld.%s",directory,base_name,number_of_zero,image_number,extension) ;
231 
232  image_number += image_step ;
233 
234  vpDEBUG_TRACE(2, "load: %s\n", name);
235 
236  vpImageIo::readPFM(I, name) ;
237 
238  width = I.getWidth();
239  height = I.getHeight();
240 
241 }
242 
250 void
252 {
253 
254  char name[FILENAME_MAX] ;
255 
256  if(useGenericName)
257  sprintf(name,genericName,image_number) ;
258  else
259  sprintf(name,"%s/%s%0*ld.%s",directory,base_name,number_of_zero,image_number,extension) ;
260 
261  vpDEBUG_TRACE(2, "load: %s\n", name);
262 
263  vpImageIo::read(I, name) ;
264 
265  width = I.getWidth();
266  height = I.getHeight();
267 }
268 
276 void
278 {
279 
280  char name[FILENAME_MAX] ;
281 
282  if(useGenericName)
283  sprintf(name,genericName,image_number) ;
284  else
285  sprintf(name,"%s/%s%0*ld.%s",directory,base_name,number_of_zero,image_number,extension) ;
286 
287  vpDEBUG_TRACE(2, "load: %s\n", name);
288 
289  vpImageIo::read(I, name) ;
290 
291  width = I.getWidth();
292  height = I.getHeight();
293 
294 }
295 
296 
304 void
306 {
307 
308  char name[FILENAME_MAX] ;
309 
310  if(useGenericName)
311  sprintf(name,genericName,image_number) ;
312  else
313  sprintf(name,"%s/%s%0*ld.%s",directory,base_name,number_of_zero,image_number,extension) ;
314 
315  vpDEBUG_TRACE(2, "load: %s\n", name);
316 
317  vpImageIo::readPFM(I, name) ;
318 
319  width = I.getWidth();
320  height = I.getHeight();
321 
322 }
323 
329 void
331 {
332  // Nothing do do here...
333 }
334 
335 
342 {
343 }
344 
345 
349 void
351 {
352  sprintf(directory, "%s", dir) ;
353 }
354 
358 void
359 vpDiskGrabber::setBaseName(const char *name)
360 {
361  sprintf(base_name, "%s", name) ;
362 }
363 
367 void
369 {
370  sprintf(extension, "%s", ext) ;
371 }
372 
376 void
378 {
379  image_number = number ;
380  vpDEBUG_TRACE(2, "image number %ld", image_number);
381 
382 }
383 
387 void
389 {
390  image_step = step;
391 }
395 void
397 {
398  number_of_zero = noz ;
399 }
400 
401 void
402 vpDiskGrabber::setGenericName(const char *genericName)
403 {
404  strcpy(this->genericName, genericName) ;
405  useGenericName = true;
406 }
#define vpDEBUG_TRACE
Definition: vpDebug.h:454
unsigned int getWidth() const
Definition: vpImage.h:159
void setBaseName(const char *name)
void setDirectory(const char *dir)
static void readPFM(vpImage< float > &I, const char *filename)
Definition: vpImageIo.cpp:793
virtual ~vpDiskGrabber()
void setNumberOfZero(unsigned int noz)
void setStep(int a)
unsigned int height
Number of rows in the image.
void setImageNumber(long number)
void open(vpImage< unsigned char > &I)
void setExtension(const char *ext)
bool init
Set to true if the frame grabber has been initialized.
long getImageNumber()
unsigned int getHeight() const
Definition: vpImage.h:150
void acquire(vpImage< unsigned char > &I)
static void read(vpImage< unsigned char > &I, const char *filename)
Definition: vpImageIo.cpp:277
unsigned int width
Number of columns in the image.
void setGenericName(const char *genericName)