Visual Servoing Platform
version 3.2.0
vp1394CMUGrabber.h
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
* Firewire cameras video capture based on CMU 1394 Digital Camera SDK.
33
*
34
* Authors:
35
* Lucas Lopes Lemos FEMTO-ST, AS2M departement, Besancon
36
* Guillaume Laurent FEMTO-ST, AS2M departement, Besancon
37
* Fabien Spindler
38
*
39
*****************************************************************************/
40
41
#ifndef vp1394CMUGrabber_h
42
#define vp1394CMUGrabber_h
43
44
#include <visp3/core/vpConfig.h>
45
46
#ifdef VISP_HAVE_CMU1394
47
48
// Include WinSock2.h before windows.h to ensure that winsock.h is not
49
// included by windows.h since winsock.h and winsock2.h are incompatible
50
#include <1394Camera.h>
// CMU library
51
#include <WinSock2.h>
52
#include <windows.h>
53
54
#include <visp3/core/vpFrameGrabber.h>
55
#include <visp3/core/vpFrameGrabberException.h>
56
#include <visp3/core/vpImage.h>
57
#include <visp3/core/vpRGBa.h>
58
151
class
VISP_EXPORT
vp1394CMUGrabber
:
public
vpFrameGrabber
152
{
153
public
:
157
typedef
enum
{ YUV444, YUV422, YUV411, RGB8, MONO8, MONO16, UNKNOWN } vpColorCodingType;
158
159
private
:
161
C1394Camera *camera;
163
int
index;
165
unsigned
long
_format;
167
unsigned
long
_mode;
169
unsigned
long
_fps;
171
bool
_modeauto;
173
unsigned
short
_gain;
175
unsigned
short
_shutter;
177
vpColorCodingType _color;
178
179
public
:
180
// Constructor.
181
vp1394CMUGrabber
();
182
// Destructor.
183
virtual
~
vp1394CMUGrabber
();
184
185
// Acquire one frame in a greyscale image.
186
void
acquire
(
vpImage<unsigned char>
&I);
187
188
// Acquire one frame in a color image.
189
void
acquire
(
vpImage<vpRGBa>
&I);
190
191
// Stop the acquisition.
192
void
close
();
193
194
// Display information about the camera on the standard output.
195
void
displayCameraDescription(
int
cam_id);
196
197
// Display camera model on the standard output. Call it after open the
198
// grabber.
199
void
displayCameraModel();
200
201
// Get the video framerate
202
int
getFramerate();
203
204
// Get the gain min and max values.
205
void
getGainMinMax(
unsigned
short
&min,
unsigned
short
&max);
206
207
// Get the number of connected cameras.
208
int
getNumberOfConnectedCameras()
const
;
209
210
// Get the shutter min and max values.
211
void
getShutterMinMax(
unsigned
short
&min,
unsigned
short
&max);
212
214
vpColorCodingType getVideoColorCoding()
const
215
{
216
vpColorCodingType color =
vp1394CMUGrabber::UNKNOWN
;
217
if
(_format == 0) {
218
switch
(_mode) {
219
case
0:
220
color =
vp1394CMUGrabber::YUV444
;
221
break
;
222
case
1:
223
color =
vp1394CMUGrabber::YUV422
;
224
break
;
225
case
2:
226
color =
vp1394CMUGrabber::YUV411
;
227
break
;
228
case
3:
229
color =
vp1394CMUGrabber::YUV422
;
230
break
;
231
case
4:
232
color =
vp1394CMUGrabber::RGB8
;
233
break
;
234
case
5:
235
color =
vp1394CMUGrabber::MONO8
;
236
break
;
237
case
6:
238
color =
vp1394CMUGrabber::MONO16
;
239
break
;
240
}
241
}
else
if
(_format == 1) {
242
switch
(_mode) {
243
case
0:
244
color =
vp1394CMUGrabber::YUV422
;
245
break
;
246
case
1:
247
color =
vp1394CMUGrabber::RGB8
;
248
break
;
249
case
2:
250
color =
vp1394CMUGrabber::MONO8
;
251
break
;
252
case
3:
253
color =
vp1394CMUGrabber::YUV422
;
254
break
;
255
case
4:
256
color =
vp1394CMUGrabber::RGB8
;
257
break
;
258
case
5:
259
color =
vp1394CMUGrabber::MONO8
;
260
break
;
261
case
6:
262
color =
vp1394CMUGrabber::MONO16
;
263
break
;
264
case
7:
265
color =
vp1394CMUGrabber::MONO16
;
266
break
;
267
}
268
}
else
if
(_format == 2) {
269
switch
(_mode) {
270
case
0:
271
color =
vp1394CMUGrabber::YUV422
;
272
break
;
273
case
1:
274
color =
vp1394CMUGrabber::RGB8
;
275
break
;
276
case
2:
277
color =
vp1394CMUGrabber::MONO8
;
278
break
;
279
case
3:
280
color =
vp1394CMUGrabber::YUV422
;
281
break
;
282
case
4:
283
color =
vp1394CMUGrabber::RGB8
;
284
break
;
285
case
5:
286
color =
vp1394CMUGrabber::MONO8
;
287
break
;
288
case
6:
289
color =
vp1394CMUGrabber::MONO16
;
290
break
;
291
case
7:
292
color =
vp1394CMUGrabber::MONO16
;
293
break
;
294
}
295
}
296
297
return
color;
298
}
299
300
// Initialization of the grabber using a greyscale image.
301
void
open
(
vpImage<unsigned char>
&I);
302
303
// Initialization of the grabber using a color image.
304
void
open
(
vpImage<vpRGBa>
&I);
305
306
vp1394CMUGrabber
&operator>>(
vpImage<unsigned char>
&I);
307
vp1394CMUGrabber
&operator>>(
vpImage<vpRGBa>
&I);
308
309
// Select the camera on the bus. Call it before open the grabber.
310
void
selectCamera(
int
cam_id);
311
312
// Enable auto gain
313
void
setAutoGain();
314
315
// Enable auto shutter
316
void
setAutoShutter();
317
318
// Set the gain and the shutter values. Call it before open the grabber
319
void
setControl(
unsigned
short
gain,
unsigned
short
shutter);
320
321
// Set the frame rate. Call it before open the grabber.
322
void
setFramerate(
unsigned
long
fps);
323
324
// Set the shutter value. Call it before open the grabber
325
void
setShutter(
unsigned
short
shutter);
326
327
// Set the gain value. Call it before open the grabber
328
void
setGain(
unsigned
short
gain);
329
330
// Set the video format and mode. Call it before open the grabber.
331
void
setVideoMode(
unsigned
long
format,
unsigned
long
mode);
332
333
private
:
334
void
initCamera();
335
};
336
337
#endif
338
#endif
vp1394CMUGrabber::MONO16
Definition:
vp1394CMUGrabber.h:156
vp1394CMUGrabber::YUV422
Definition:
vp1394CMUGrabber.h:156
vp1394CMUGrabber::UNKNOWN
Definition:
vp1394CMUGrabber.h:156
vpFrameGrabber::acquire
virtual void acquire(vpImage< unsigned char > &I)=0
vp1394CMUGrabber
Firewire cameras video capture based on CMU 1394 Digital Camera SDK.
Definition:
vp1394CMUGrabber.h:150
vpFrameGrabber
Base class for all video devices. It is designed to provide a front end to video sources.
Definition:
vpFrameGrabber.h:100
vp1394CMUGrabber::RGB8
Definition:
vp1394CMUGrabber.h:156
vpFrameGrabber::open
virtual void open(vpImage< unsigned char > &I)=0
vpFrameGrabber::close
virtual void close()=0
vp1394CMUGrabber::YUV444
Definition:
vp1394CMUGrabber.h:156
vp1394CMUGrabber::YUV411
Definition:
vp1394CMUGrabber.h:156
vpImage< unsigned char >
vp1394CMUGrabber::MONO8
Definition:
vp1394CMUGrabber.h:156
modules
sensor
include
visp3
sensor
vp1394CMUGrabber.h
Generated by
1.8.16