16 #include <mrpt/otherlibs/do_opencv_includes.h>
19 # include <svsclass.h>
32 m_bInitialized(false),
35 m_disparityParams(NULL),
36 m_resolutionX( options.frame_width ),
37 m_resolutionY( options.frame_height ),
38 m_procesOnChip(options.m_procesOnChip),
39 m_calDisparity(options.m_calDisparity),
45 m_videoObject =
static_cast<svsVideoImages*
>( getVideoObject());
46 cout<<
"Using live images:"<<endl;
47 cout<<
"svsVideoIdent"<<endl;
54 cout<<
" stereo device Opened"<<endl;
67 if(!(
static_cast<svsVideoImages*
>(
m_videoObject)->SetExposure(0,0,
true,
true)))
69 cout<<
"Can't set Auto exposure"<<endl;
72 cout<<
"Autoexposure set to 0 0"<<endl;
84 if(
static_cast<svsVideoImages*
>(
m_videoObject)->CheckParams())
86 cout<<
"Params OK !"<<endl;
89 bool ret =
static_cast<svsVideoImages*
>(
m_videoObject)->Start();
92 cout<<
" Start Continuous mode"<<endl;
97 ret =
static_cast<svsVideoImages*
>(
m_videoObject)->SetRect(
true);
99 cout<<
"Images will be rectified"<<endl;
101 cout<<
"Can't set rectification"<<endl;
108 static_cast<svsVideoImages*
>(
m_videoObject)->SetProcMode(PROC_MODE_DISPARITY);
109 cout<<
"Setting STOC disparity mode"<<endl;
118 static_cast<svsVideoImages*
>(
m_videoObject)->SetProcMode(PROC_MODE_OFF);
119 cout<<
"Setting STOC stereo mode"<<endl;
125 cout<<
"Can't start continuous capture"<<endl;
138 cout<<
"Params Unconsistents !"<<endl;
145 cout<<
"Can't open stereo device"<<endl;
151 THROW_EXCEPTION(
"This class requires MRPT built with Videre SVS library.")
181 ImageLeft->widthStep=ImageLeft->width;
182 ImageLeft->imageData =(
char*)
static_cast<svsStereoImage*
>(
m_stereoImage)->Left();
188 unsigned char *ptrOutDisp;
191 ptrDisp =
static_cast<svsStereoImage*
>(
m_stereoImage)->Disparity();
192 ptrOutDisp = (
unsigned char*) ImageDisparity->imageData;
194 ASSERT_(ImageDisparity->widthStep==ImageDisparity->width);
196 for(
int pix = 0;pix<sizeOfMat;pix++,ptrOutDisp++,ptrDisp++ )
199 *(ptrOutDisp) = (
unsigned char)((*(ptrDisp)>>2)&0x00FF);
206 cvCloneImage( ImageLeft ),
211 out_observation.
swap(ret_obj);
218 unsigned char *ptrOutDisp;
221 ptrDisp =
static_cast<svsStereoImage*
>(
m_stereoImage)->Disparity();
222 ptrOutDisp = (
unsigned char*) ImageDisparity->imageData;
224 ASSERT_(ImageDisparity->widthStep==ImageDisparity->width);
226 for(
int pix = 0;pix<sizeOfMat;pix++,ptrOutDisp++,ptrDisp++ )
229 *(ptrOutDisp) = (
unsigned char)((*(ptrDisp)>>2)&0x00FF);
236 cvCloneImage( ImageLeft ),
241 out_observation.
swap(ret_obj);
248 ImageRight->widthStep=ImageRight->width;
249 ImageRight->imageData =(
char*)
static_cast<svsStereoImage*
>(
m_stereoImage)->Right();
253 cvCloneImage( ImageLeft ),
254 cvCloneImage( ImageRight ),
258 out_observation.
swap(ret_obj);
281 int _Corrsize,
int _LR ,
int _Thresh,
int _Unique,
int _Horopter,
int _SpeckleSize,
bool _procesOnChip,
bool _calDisparity)
bool getStereoObservation(mrpt::obs::CObservationStereoImages &out_observation)
Grab stereo images, and return the pair of rectified images.
virtual ~CStereoGrabber_SVS(void)
Destructor.
unsigned int m_resolutionX
unsigned int m_resolutionY
TCaptureOptions_SVS m_options
Observation class for either a pair of left+right or left+disparity images from a stereo camera.
void swap(CObservationStereoImages &o)
Do an efficient swap of all data members of this object with "o".
#define THROW_EXCEPTION(msg)
#define MRPT_UNUSED_PARAM(a)
Can be used to avoid "not used parameters" warnings from the compiler.
Contains classes for various device interfaces.
This namespace contains representation of robot actions and observations.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Options used when creating a STOC Videre Design camera capture object.
int frame_height
Capture resolution (Default: 640x480)
TCaptureOptions_SVS(int _frame_width=640, int _frame_height=480, double _framerate=30, int _NDisp=64, int _Corrsize=15, int _LR=false, int _Thresh=10, int _Unique=13, int _Horopter=0, int _SpeckleSize=100, bool _procesOnChip=true, bool _calDisparity=true)
double framerate
STOC camera frame rate (Default: 30 fps)
int m_NDisp
number of STOC's disparities (Default: 64 )