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