ZED Open Capture  v0.6.0
Low level camera driver for the ZED stereo camera family
Functions | Variables
zed_oc_tune_stereo_sgbm.cpp File Reference

Go to the source code of this file.

Functions

void applyStereoMatching ()
 
void on_trackbar_block_size (int newBlockSize, void *)
 
void on_trackbar_min_disparities (int newMinDisparities, void *)
 
void on_trackbar_num_disparities (int newNumDisparities, void *)
 
void on_trackbar_mode (int newMode, void *)
 
void on_trackbar_disp12MaxDiff (int newDisp12MaxDiff, void *)
 
void on_trackbar_preFilterCap (int newPreFilterCap, void *)
 
void on_trackbar_uniquenessRatio (int newUniquenessRatio, void *)
 
void on_trackbar_speckleWindowSize (int newSpeckleWindowSize, void *)
 
void on_trackbar_speckleRange (int newSpeckleRange, void *)
 
int main (int argc, char *argv[])
 

Variables

sl_oc::video::VideoParams params
 
std::string preFiltDispWinName = "Pre-filtered disparity"
 
sl_oc::tools::StereoSgbmPar stereoPar
 
cv::Ptr< cv::StereoSGBM > left_matcher
 
cv::Mat frameBGR
 
cv::Mat left_raw
 
cv::Mat left_rect
 
cv::Mat right_raw
 
cv::Mat right_rect
 
cv::Mat frameYUV
 
cv::Mat right_for_matcher
 
cv::Mat left_for_matcher
 
cv::Mat left_disp
 
cv::Mat left_disp_vis
 
int maxMaxDisp =0
 
bool params_initialized =false
 

Function Documentation

◆ applyStereoMatching()

void applyStereoMatching ( )
Examples
zed_oc_tune_stereo_sgbm.cpp.

Definition at line 311 of file zed_oc_tune_stereo_sgbm.cpp.

312 {
313  if(!params_initialized)
314  return;
315 
316  // ----> Stereo matching
317  sl_oc::tools::StopWatch stereo_clock;
318 
319 #ifdef USE_HALF_SIZE_DISPARITY
320  cv::resize(left_rect, left_for_matcher, cv::Size(), 0.5, 0.5, cv::INTER_AREA);
321  cv::resize(right_rect, right_for_matcher, cv::Size(), 0.5, 0.5, cv::INTER_AREA);
322 #else
323  left_for_matcher = left_rect.clone();
324  right_for_matcher = right_rect.clone();
325 #endif
326 
327  left_matcher->setMinDisparity(stereoPar.minDisparity);
328  left_matcher->setNumDisparities(stereoPar.numDisparities);
329  left_matcher->setBlockSize(stereoPar.blockSize);
330  left_matcher->setP1(stereoPar.P1);
331  left_matcher->setP2(stereoPar.P2);
332  left_matcher->setDisp12MaxDiff(stereoPar.disp12MaxDiff);
333  left_matcher->setMode(stereoPar.mode);
334  left_matcher->setPreFilterCap(stereoPar.preFilterCap);
335  left_matcher->setUniquenessRatio(stereoPar.uniquenessRatio);
336  left_matcher->setSpeckleWindowSize(stereoPar.speckleWindowSize);
337  left_matcher->setSpeckleRange(stereoPar.speckleRange);
338 #ifdef USE_HALF_SIZE_DISPARITY
339  left_disp*=2;
340 #endif
341 
342  std::cout << "Start stereo matching..." << std::endl;
344  std::cout << "... finished stereo matching" << std::endl;
345 
346  double elapsed = stereo_clock.toc();
347  std::cout << "Stereo processing: " << elapsed << " sec - Freq: " << 1./elapsed << std::endl;
348  // <---- Stereo matching
349 
350  // ----> Show disparity
351  //cv::ximgproc::getDisparityVis(left_disp,left_disp_vis,3.0);
352  cv::normalize(left_disp, left_disp_vis, 0, 255, cv::NORM_MINMAX, CV_8UC1);
353 #ifdef USE_HALF_SIZE_DISPARITY
354  cv::resize(left_disp_vis, left_disp_vis, cv::Size(), 2.0, 2.0, cv::INTER_AREA);
355 #endif
357  // <---- Show disparity
358 }
int P1
[default: 24*blockSize*blockSize] The first parameter controlling the disparity smoothness....
Definition: stereo.hpp:57
int disp12MaxDiff
[default: 96] Maximum allowed difference (in integer pixel units) in the left-right disparity check....
Definition: stereo.hpp:59
int speckleWindowSize
[default: 255] Maximum size of smooth disparity regions to consider their noise speckles and invalida...
Definition: stereo.hpp:62
int uniquenessRatio
[default: 5] Margin in percentage by which the best (minimum) computed cost function value should "wi...
Definition: stereo.hpp:61
int minDisparity
[default: 0] Minimum possible disparity value. Normally, it is zero but sometimes rectification algor...
Definition: stereo.hpp:54
int numDisparities
[default: 96] Maximum disparity minus minimum disparity. The value is always greater than zero....
Definition: stereo.hpp:55
int mode
Set it to StereoSGBM::MODE_HH to run the full-scale two-pass dynamic programming algorithm....
Definition: stereo.hpp:56
int speckleRange
[default: 1] Maximum disparity variation within each connected component. If you do speckle filtering...
Definition: stereo.hpp:63
int blockSize
[default: 3] Matched block size. It must be an odd number >=1 . Normally, it should be somewhere in t...
Definition: stereo.hpp:53
int preFilterCap
[default: 63] Truncation value for the prefiltered image pixels. The algorithm first computes x-deriv...
Definition: stereo.hpp:60
int P2
[default: 4*PI]The second parameter controlling the disparity smoothness. The larger the values are,...
Definition: stereo.hpp:58
Stop Timer used to measure time intervals.
Definition: stopwatch.hpp:34
double toc()
Calculates the seconds elapsed from the last tic.
Definition: stopwatch.hpp:55
void showImage(std::string name, cv::UMat &img, sl_oc::video::RESOLUTION res, bool change_name=true, std::string info="")
Rescale the OpenCV T-API images [cv::UMat] according to the selected resolution to better display the...
Definition: ocv_display.hpp:27
RESOLUTION res
Camera resolution.
sl_oc::tools::StereoSgbmPar stereoPar
std::string preFiltDispWinName
cv::Mat left_for_matcher
sl_oc::video::VideoParams params
bool params_initialized
cv::Mat right_for_matcher
cv::Mat left_disp_vis
cv::Mat left_rect
cv::Mat left_disp
cv::Mat right_rect
cv::Ptr< cv::StereoSGBM > left_matcher

References sl_oc::tools::StereoSgbmPar::blockSize, sl_oc::tools::StereoSgbmPar::disp12MaxDiff, left_disp, left_disp_vis, left_for_matcher, left_matcher, left_rect, sl_oc::tools::StereoSgbmPar::minDisparity, sl_oc::tools::StereoSgbmPar::mode, sl_oc::tools::StereoSgbmPar::numDisparities, sl_oc::tools::StereoSgbmPar::P1, sl_oc::tools::StereoSgbmPar::P2, params, params_initialized, preFiltDispWinName, sl_oc::tools::StereoSgbmPar::preFilterCap, sl_oc::video::VideoParams::res, right_for_matcher, right_rect, sl_oc::tools::showImage(), sl_oc::tools::StereoSgbmPar::speckleRange, sl_oc::tools::StereoSgbmPar::speckleWindowSize, stereoPar, sl_oc::tools::StopWatch::toc(), and sl_oc::tools::StereoSgbmPar::uniquenessRatio.

Referenced by main(), on_trackbar_block_size(), on_trackbar_disp12MaxDiff(), on_trackbar_min_disparities(), on_trackbar_mode(), on_trackbar_num_disparities(), on_trackbar_preFilterCap(), on_trackbar_speckleRange(), on_trackbar_speckleWindowSize(), and on_trackbar_uniquenessRatio().

◆ main()

int main ( int  argc,
char *  argv[] 
)
Examples
zed_oc_tune_stereo_sgbm.cpp.

Definition at line 72 of file zed_oc_tune_stereo_sgbm.cpp.

73 {
74  // ----> Silence unused warning
75  (void)argc;
76  (void)argv;
77  // <---- Silence unused warning
78 
80 
81  // ----> Set Video parameters
82 #ifdef EMBEDDED_ARM
84 #else
86 #endif
88  params.verbose = verbose;
89  // <---- Set Video parameters
90 
91  // ----> Create Video Capture
93  if( !cap.initializeVideo(-1) )
94  {
95  std::cerr << "Cannot open camera video capture" << std::endl;
96  std::cerr << "See verbosity level for more details." << std::endl;
97 
98  return EXIT_FAILURE;
99  }
100  int sn = cap.getSerialNumber();
101  std::cout << "Connected to camera sn: " << sn << std::endl;
102  // <---- Create Video Capture
103 
104  // ----> Retrieve calibration file from Stereolabs server
105  std::string calibration_file;
106  // ZED Calibration
107  unsigned int serial_number = sn;
108  // Download camera calibration file
109  if( !sl_oc::tools::downloadCalibrationFile(serial_number, calibration_file) )
110  {
111  std::cerr << "Could not load calibration file from Stereolabs servers" << std::endl;
112  return EXIT_FAILURE;
113  }
114  std::cout << "Calibration file found. Loading..." << std::endl;
115 
116  // ----> Frame size
117  int w,h;
118  cap.getFrameSize(w,h);
119  // <---- Frame size
120 
121  // ----> Initialize calibration
122  cv::Mat map_left_x, map_left_y;
123  cv::Mat map_right_x, map_right_y;
124  cv::Mat cameraMatrix_left, cameraMatrix_right;
125  sl_oc::tools::initCalibration(calibration_file, cv::Size(w/2,h), map_left_x, map_left_y, map_right_x, map_right_y,
126  cameraMatrix_left, cameraMatrix_right);
127 
128  std::cout << " Camera Matrix L: \n" << cameraMatrix_left << std::endl << std::endl;
129  std::cout << " Camera Matrix R: \n" << cameraMatrix_right << std::endl << std::endl;
130  // <---- Initialize calibration
131 
132  // Grab first valid frame couple
133  while (1)
134  {
135  // Get a new frame from camera
136  const sl_oc::video::Frame frame = cap.getLastFrame();
137 
138  // ----> If the frame is valid we can convert, rectify and display it
139  if(frame.data!=nullptr)
140  {
141  // ----> Conversion from YUV 4:2:2 to BGR for visualization
142  frameYUV = cv::Mat( frame.height, frame.width, CV_8UC2, frame.data );
143  cv::cvtColor(frameYUV,frameBGR,cv::COLOR_YUV2BGR_YUYV);
144  // <---- Conversion from YUV 4:2:2 to BGR for visualization
145 
146  // ----> Extract left and right images from side-by-side
147  left_raw = frameBGR(cv::Rect(0, 0, frameBGR.cols / 2, frameBGR.rows));
148  right_raw = frameBGR(cv::Rect(frameBGR.cols / 2, 0, frameBGR.cols / 2, frameBGR.rows));
149  // <---- Extract left and right images from side-by-side
150 
151  // ----> Apply rectification
152  cv::remap(left_raw, left_rect, map_left_x, map_left_y, cv::INTER_LINEAR );
153  cv::remap(right_raw, right_rect, map_right_x, map_right_y, cv::INTER_LINEAR );
154 
155  sl_oc::tools::showImage("Right rect.", right_rect, params.res);
157  // <---- Apply rectification
158 
159  break;
160  }
161 
162  cv::waitKey(10);
163  }
164 
165  // ----> Create tune GUI
166  maxMaxDisp = right_rect.cols;
167 #ifdef USE_HALF_SIZE_DISPARITY
168  maxMaxDisp/=2;
169 #endif
170 
171  cv::namedWindow(preFiltDispWinName, cv::WINDOW_AUTOSIZE); // Create Window
172 
173  cv::createTrackbar( "blockSize", preFiltDispWinName, nullptr, 255, on_trackbar_block_size );
174  cv::setTrackbarMin( "blockSize", preFiltDispWinName, 1 );
175 
176  cv::createTrackbar( "numDisparities", preFiltDispWinName, nullptr, maxMaxDisp, on_trackbar_num_disparities );
177  cv::setTrackbarMin( "numDisparities", preFiltDispWinName, 16 );
178 
179  cv::createTrackbar( "minDisparity", preFiltDispWinName, nullptr, maxMaxDisp-16, on_trackbar_min_disparities );
180  cv::setTrackbarMin( "minDisparity", preFiltDispWinName, -maxMaxDisp );
181 
182  cv::createTrackbar( "mode", preFiltDispWinName, nullptr, 3, on_trackbar_mode);
183  cv::setTrackbarMin( "mode", preFiltDispWinName, 0 );
184 
185  cv::createTrackbar( "disp12MaxDiff", preFiltDispWinName, nullptr, maxMaxDisp, on_trackbar_disp12MaxDiff);
186  cv::setTrackbarMin( "disp12MaxDiff", preFiltDispWinName, -1 );
187 
188  cv::createTrackbar( "preFilterCap", preFiltDispWinName, nullptr, 1024, on_trackbar_preFilterCap);
189  cv::setTrackbarMin( "preFilterCap", preFiltDispWinName, 0 );
190 
191  cv::createTrackbar( "uniquenessRatio", preFiltDispWinName, nullptr, 99, on_trackbar_uniquenessRatio);
192  cv::setTrackbarMin( "uniquenessRatio", preFiltDispWinName, 0 );
193 
194  cv::createTrackbar( "speckleWindowSize", preFiltDispWinName, nullptr, 255, on_trackbar_speckleWindowSize);
195  cv::setTrackbarMin( "speckleWindowSize", preFiltDispWinName, 0 );
196 
197  cv::createTrackbar( "speckleRange", preFiltDispWinName, nullptr, 16, on_trackbar_speckleRange);
198  cv::setTrackbarMin( "speckleRange", preFiltDispWinName, 1 );
199 
200  // <---- Create tune GUI
201 
202  // ----> Stereo matcher initialization
203  stereoPar.load();
204 
206  left_matcher->setMinDisparity(stereoPar.minDisparity);
207  left_matcher->setNumDisparities(stereoPar.numDisparities);
208  left_matcher->setBlockSize(stereoPar.blockSize);
209  left_matcher->setP1(stereoPar.P1);
210  left_matcher->setP2(stereoPar.P2);
211  left_matcher->setDisp12MaxDiff(stereoPar.disp12MaxDiff);
212  left_matcher->setMode(stereoPar.mode);
213  left_matcher->setPreFilterCap(stereoPar.preFilterCap);
214  left_matcher->setUniquenessRatio(stereoPar.uniquenessRatio);
215  left_matcher->setSpeckleWindowSize(stereoPar.speckleWindowSize);
216  left_matcher->setSpeckleRange(stereoPar.speckleRange);
217 
218  stereoPar.print();
219 
220  params_initialized=true;
221  // <---- Stereo matcher initialization
222 
223  // ----> Update GUI value
224  cv::setTrackbarPos( "blockSize", preFiltDispWinName, stereoPar.blockSize );
225  cv::setTrackbarPos( "numDisparities", preFiltDispWinName, stereoPar.numDisparities );
226  cv::setTrackbarPos( "minDisparity", preFiltDispWinName, stereoPar.minDisparity );
227  cv::setTrackbarPos( "mode", preFiltDispWinName, stereoPar.mode );
228  cv::setTrackbarPos( "disp12MaxDiff", preFiltDispWinName, stereoPar.disp12MaxDiff );
229  cv::setTrackbarPos( "preFilterCap", preFiltDispWinName, stereoPar.preFilterCap );
230  cv::setTrackbarPos( "uniquenessRatio", preFiltDispWinName, stereoPar.uniquenessRatio );
231  cv::setTrackbarPos( "speckleWindowSize", preFiltDispWinName, stereoPar.speckleWindowSize );
232  cv::setTrackbarPos( "speckleRange", preFiltDispWinName, stereoPar.speckleRange );
233  // <---- Update GUI value
234 
236 
237  while(1)
238  {
239  // ----> Keyboard handling
240  int key = cv::waitKey( 5 );
241  if(key=='q' || key==27) // Quit
242  {
243  std::cout << "Save current stereo parameters? [Y/N]" << std::endl;
244  key = cv::waitKey(-1);
245  if(key=='Y' || key=='y')
246  {
247  stereoPar.save();
248  }
249  break;
250  }
251  if(key=='l' || key=='L') // load parameters)
252  {
253  if(stereoPar.load())
254  {
255  left_matcher->setMinDisparity(stereoPar.minDisparity);
256  left_matcher->setNumDisparities(stereoPar.numDisparities);
257  left_matcher->setBlockSize(stereoPar.blockSize);
258  left_matcher->setP1(stereoPar.P1);
259  left_matcher->setP2(stereoPar.P2);
260  left_matcher->setDisp12MaxDiff(-(stereoPar.disp12MaxDiff-1));
261  left_matcher->setMode(stereoPar.mode);
262  left_matcher->setPreFilterCap(stereoPar.preFilterCap);
263  left_matcher->setUniquenessRatio(stereoPar.uniquenessRatio);
264  left_matcher->setSpeckleWindowSize(stereoPar.speckleWindowSize);
265  left_matcher->setSpeckleRange(stereoPar.speckleRange);
266 
267  // ----> Update GUI value
268  cv::setTrackbarPos( "blockSize", preFiltDispWinName, stereoPar.blockSize );
269  cv::setTrackbarPos( "numDisparities", preFiltDispWinName, stereoPar.numDisparities );
270  cv::setTrackbarPos( "minDisparity", preFiltDispWinName, stereoPar.minDisparity );
271  cv::setTrackbarPos( "mode", preFiltDispWinName, stereoPar.mode );
272  cv::setTrackbarPos( "disp12MaxDiff", preFiltDispWinName, stereoPar.disp12MaxDiff );
273  cv::setTrackbarPos( "preFilterCap", preFiltDispWinName, stereoPar.preFilterCap );
274  cv::setTrackbarPos( "uniquenessRatio", preFiltDispWinName, stereoPar.uniquenessRatio );
275  cv::setTrackbarPos( "speckleWindowSize", preFiltDispWinName, stereoPar.speckleWindowSize );
276  cv::setTrackbarPos( "speckleRange", preFiltDispWinName, stereoPar.speckleRange );
277  // <---- Update GUI value
278 
280  }
281  }
282 
283  if(key=='s' || key=='S') // load parameters
284  {
285  stereoPar.save();
286  }
287 
288  if(key=='r' || key=='R') // reset default parameters
289  {
291  // ----> Update GUI value
292  cv::setTrackbarPos( "blockSize", preFiltDispWinName, stereoPar.blockSize );
293  cv::setTrackbarPos( "numDisparities", preFiltDispWinName, stereoPar.numDisparities );
294  cv::setTrackbarPos( "minDisparity", preFiltDispWinName, stereoPar.minDisparity );
295  cv::setTrackbarPos( "mode", preFiltDispWinName, stereoPar.mode );
296  cv::setTrackbarPos( "disp12MaxDiff", preFiltDispWinName, stereoPar.disp12MaxDiff );
297  cv::setTrackbarPos( "preFilterCap", preFiltDispWinName, stereoPar.preFilterCap );
298  cv::setTrackbarPos( "uniquenessRatio", preFiltDispWinName, stereoPar.uniquenessRatio );
299  cv::setTrackbarPos( "speckleWindowSize", preFiltDispWinName, stereoPar.speckleWindowSize );
300  cv::setTrackbarPos( "speckleRange", preFiltDispWinName, stereoPar.speckleRange );
301  // <---- Update GUI value
303  }
304 
305  // <---- Keyboard handling
306  }
307 
308  return EXIT_SUCCESS;
309 }
void setDefaultValues()
set default stereo matching parameters
Definition: stereo.hpp:69
bool save()
save stereo matching parameters
Definition: stereo.hpp:120
bool load()
load stereo matching parameters
Definition: stereo.hpp:87
void print()
print the current stereo matching parameters on standard output
Definition: stereo.hpp:150
The VideoCapture class provides image grabbing functions and settings control for all the Stereolabs ...
bool initCalibration(std::string calibration_file, cv::Size2i image_size, cv::Mat &map_left_x, cv::Mat &map_left_y, cv::Mat &map_right_x, cv::Mat &map_right_y, cv::Mat &cameraMatrix_left, cv::Mat &cameraMatrix_right, double *baseline=nullptr)
bool downloadCalibrationFile(unsigned int serial_number, std::string &calibration_file)
@ FPS_30
30 Frames per second. Not available for RESOLUTION::HD2K.
VERBOSITY
Definition: defines.hpp:85
@ INFO
Definition: defines.hpp:89
The Frame struct containing the acquired video frames.
uint16_t height
Frame height.
uint16_t width
Frame width.
uint8_t * data
Frame data in YUV 4:2:2 format.
FPS fps
Frames per second.
cv::Mat left_raw
void on_trackbar_mode(int newMode, void *)
cv::Mat frameBGR
void on_trackbar_speckleRange(int newSpeckleRange, void *)
void on_trackbar_num_disparities(int newNumDisparities, void *)
cv::Mat right_raw
void applyStereoMatching()
void on_trackbar_min_disparities(int newMinDisparities, void *)
void on_trackbar_preFilterCap(int newPreFilterCap, void *)
void on_trackbar_disp12MaxDiff(int newDisp12MaxDiff, void *)
cv::Mat frameYUV
void on_trackbar_block_size(int newBlockSize, void *)
void on_trackbar_uniquenessRatio(int newUniquenessRatio, void *)
void on_trackbar_speckleWindowSize(int newSpeckleWindowSize, void *)

References applyStereoMatching(), sl_oc::tools::StereoSgbmPar::blockSize, sl_oc::video::Frame::data, sl_oc::tools::StereoSgbmPar::disp12MaxDiff, sl_oc::tools::downloadCalibrationFile(), sl_oc::video::VideoParams::fps, sl_oc::video::FPS_30, frameBGR, frameYUV, sl_oc::video::VideoCapture::getFrameSize(), sl_oc::video::VideoCapture::getLastFrame(), sl_oc::video::VideoCapture::getSerialNumber(), sl_oc::video::HD720, sl_oc::video::Frame::height, sl_oc::INFO, sl_oc::tools::initCalibration(), sl_oc::video::VideoCapture::initializeVideo(), left_matcher, left_raw, left_rect, sl_oc::tools::StereoSgbmPar::load(), maxMaxDisp, sl_oc::tools::StereoSgbmPar::minDisparity, sl_oc::tools::StereoSgbmPar::mode, sl_oc::tools::StereoSgbmPar::numDisparities, on_trackbar_block_size(), on_trackbar_disp12MaxDiff(), on_trackbar_min_disparities(), on_trackbar_mode(), on_trackbar_num_disparities(), on_trackbar_preFilterCap(), on_trackbar_speckleRange(), on_trackbar_speckleWindowSize(), on_trackbar_uniquenessRatio(), sl_oc::tools::StereoSgbmPar::P1, sl_oc::tools::StereoSgbmPar::P2, params, params_initialized, preFiltDispWinName, sl_oc::tools::StereoSgbmPar::preFilterCap, sl_oc::tools::StereoSgbmPar::print(), sl_oc::video::VideoParams::res, right_raw, right_rect, sl_oc::tools::StereoSgbmPar::save(), sl_oc::tools::StereoSgbmPar::setDefaultValues(), sl_oc::tools::showImage(), sl_oc::tools::StereoSgbmPar::speckleRange, sl_oc::tools::StereoSgbmPar::speckleWindowSize, stereoPar, sl_oc::tools::StereoSgbmPar::uniquenessRatio, sl_oc::video::VideoParams::verbose, sl_oc::video::VGA, and sl_oc::video::Frame::width.

◆ on_trackbar_block_size()

void on_trackbar_block_size ( int  newBlockSize,
void *   
)
Examples
zed_oc_tune_stereo_sgbm.cpp.

Definition at line 361 of file zed_oc_tune_stereo_sgbm.cpp.

362 {
363  bool fixed = false;
364  if(newBlockSize==stereoPar.blockSize)
365  return;
366 
367  if(newBlockSize%2!=1)
368  {
369  if(newBlockSize>stereoPar.blockSize)
370  ++newBlockSize;
371  else
372  --newBlockSize;
373  fixed=true;
374  }
375  if(newBlockSize<1)
376  {
377  newBlockSize=1;
378  fixed=true;
379  }
380  if(newBlockSize>255)
381  {
382  newBlockSize=255;
383  fixed=true;
384  }
385 
386  stereoPar.blockSize = newBlockSize;
389 
390  if(fixed)
391  {
392  cv::setTrackbarPos("blockSize", preFiltDispWinName, newBlockSize);
393  }
394 
395  std::cout << "New 'blockSize' value: " << stereoPar.blockSize << std::endl;
397 }

References applyStereoMatching(), sl_oc::tools::StereoSgbmPar::blockSize, sl_oc::tools::StereoSgbmPar::P1, preFiltDispWinName, and stereoPar.

Referenced by main().

◆ on_trackbar_disp12MaxDiff()

void on_trackbar_disp12MaxDiff ( int  newDisp12MaxDiff,
void *   
)
Examples
zed_oc_tune_stereo_sgbm.cpp.

Definition at line 462 of file zed_oc_tune_stereo_sgbm.cpp.

463 {
464  if(newDisp12MaxDiff==stereoPar.disp12MaxDiff)
465  return;
466 
467  stereoPar.disp12MaxDiff = newDisp12MaxDiff;
468 
469  std::cout << "New 'disp12MaxDiff' value: " << stereoPar.disp12MaxDiff << std::endl;
471 }

References applyStereoMatching(), sl_oc::tools::StereoSgbmPar::disp12MaxDiff, and stereoPar.

Referenced by main().

◆ on_trackbar_min_disparities()

void on_trackbar_min_disparities ( int  newMinDisparities,
void *   
)
Examples
zed_oc_tune_stereo_sgbm.cpp.

Definition at line 399 of file zed_oc_tune_stereo_sgbm.cpp.

400 {
401  if(newMinDisparities==stereoPar.minDisparity)
402  return;
403 
404  stereoPar.minDisparity = newMinDisparities;
405 
407  {
409  cv::setTrackbarPos("numDisparities", preFiltDispWinName, newNumDisparities);
410  std::cout << "New 'numDisparities' value: " << stereoPar.numDisparities << std::endl;
411  }
412 
413  std::cout << "New 'minDisparity' value: " << stereoPar.minDisparity << std::endl;
415 }

References applyStereoMatching(), maxMaxDisp, sl_oc::tools::StereoSgbmPar::minDisparity, sl_oc::tools::StereoSgbmPar::numDisparities, preFiltDispWinName, and stereoPar.

Referenced by main().

◆ on_trackbar_mode()

void on_trackbar_mode ( int  newMode,
void *   
)
Examples
zed_oc_tune_stereo_sgbm.cpp.

Definition at line 451 of file zed_oc_tune_stereo_sgbm.cpp.

452 {
453  if(newMode==stereoPar.mode)
454  return;
455 
456  stereoPar.mode = newMode;
457 
458  std::cout << "New 'mode' value: " << stereoPar.mode << std::endl;
460 }

References applyStereoMatching(), sl_oc::tools::StereoSgbmPar::mode, and stereoPar.

Referenced by main().

◆ on_trackbar_num_disparities()

void on_trackbar_num_disparities ( int  newNumDisparities,
void *   
)
Examples
zed_oc_tune_stereo_sgbm.cpp.

Definition at line 417 of file zed_oc_tune_stereo_sgbm.cpp.

418 {
419  bool fixed = false;
420  if(newNumDisparities==stereoPar.numDisparities)
421  return;
422 
423  if(newNumDisparities%16!=0)
424  {
425  if(newNumDisparities<stereoPar.numDisparities)
426  newNumDisparities = newNumDisparities/16;
427  else
428  newNumDisparities = newNumDisparities/16 + 1;
429  newNumDisparities*=16;
430  fixed=true;
431  }
432 
433  stereoPar.numDisparities = newNumDisparities;
434 
435  if(fixed)
436  {
437  cv::setTrackbarPos("numDisparities", preFiltDispWinName, newNumDisparities);
438  }
439 
441  {
443  cv::setTrackbarPos("minDisparity", preFiltDispWinName, newMinDisparity);
444  std::cout << "New 'minDisparity' value: " << stereoPar.minDisparity << std::endl;
445  }
446 
447  std::cout << "New 'numDisparities' value: " << stereoPar.numDisparities << std::endl;
449 }

References applyStereoMatching(), maxMaxDisp, sl_oc::tools::StereoSgbmPar::minDisparity, sl_oc::tools::StereoSgbmPar::numDisparities, preFiltDispWinName, and stereoPar.

Referenced by main().

◆ on_trackbar_preFilterCap()

void on_trackbar_preFilterCap ( int  newPreFilterCap,
void *   
)
Examples
zed_oc_tune_stereo_sgbm.cpp.

Definition at line 473 of file zed_oc_tune_stereo_sgbm.cpp.

474 {
475  if(newPreFilterCap==stereoPar.preFilterCap)
476  return;
477 
478  stereoPar.preFilterCap = newPreFilterCap;
479 
480  std::cout << "New 'preFilterCap' value: " << stereoPar.preFilterCap << std::endl;
482 }

References applyStereoMatching(), sl_oc::tools::StereoSgbmPar::preFilterCap, and stereoPar.

Referenced by main().

◆ on_trackbar_speckleRange()

void on_trackbar_speckleRange ( int  newSpeckleRange,
void *   
)
Examples
zed_oc_tune_stereo_sgbm.cpp.

Definition at line 506 of file zed_oc_tune_stereo_sgbm.cpp.

507 {
508  if(newSpeckleRange==stereoPar.speckleRange)
509  return;
510 
511  stereoPar.speckleRange = newSpeckleRange;
512 
513  std::cout << "New 'speckleRange' value: " << stereoPar.speckleRange << std::endl;
515 }

References applyStereoMatching(), sl_oc::tools::StereoSgbmPar::speckleRange, and stereoPar.

Referenced by main().

◆ on_trackbar_speckleWindowSize()

void on_trackbar_speckleWindowSize ( int  newSpeckleWindowSize,
void *   
)
Examples
zed_oc_tune_stereo_sgbm.cpp.

Definition at line 495 of file zed_oc_tune_stereo_sgbm.cpp.

496 {
497  if(newSpeckleWindowSize==stereoPar.speckleWindowSize)
498  return;
499 
500  stereoPar.speckleWindowSize = newSpeckleWindowSize;
501 
502  std::cout << "New 'speckleWindowSize' value: " << stereoPar.speckleWindowSize << std::endl;
504 }

References applyStereoMatching(), sl_oc::tools::StereoSgbmPar::speckleWindowSize, and stereoPar.

Referenced by main().

◆ on_trackbar_uniquenessRatio()

void on_trackbar_uniquenessRatio ( int  newUniquenessRatio,
void *   
)
Examples
zed_oc_tune_stereo_sgbm.cpp.

Definition at line 484 of file zed_oc_tune_stereo_sgbm.cpp.

485 {
486  if(newUniquenessRatio==stereoPar.uniquenessRatio)
487  return;
488 
489  stereoPar.uniquenessRatio = newUniquenessRatio;
490 
491  std::cout << "New 'uniquenessRatio' value: " << stereoPar.uniquenessRatio << std::endl;
493 }

References applyStereoMatching(), stereoPar, and sl_oc::tools::StereoSgbmPar::uniquenessRatio.

Referenced by main().

Variable Documentation

◆ frameBGR

cv::Mat frameBGR

◆ frameYUV

cv::Mat frameYUV

◆ left_disp

cv::Mat left_disp

◆ left_disp_vis

cv::Mat left_disp_vis

◆ left_for_matcher

cv::Mat left_for_matcher

◆ left_matcher

cv::Ptr<cv::StereoSGBM> left_matcher

◆ left_raw

cv::Mat left_raw

◆ left_rect

cv::Mat left_rect

◆ maxMaxDisp

int maxMaxDisp =0

◆ params

◆ params_initialized

bool params_initialized =false
Examples
zed_oc_tune_stereo_sgbm.cpp.

Definition at line 55 of file zed_oc_tune_stereo_sgbm.cpp.

Referenced by applyStereoMatching(), and main().

◆ preFiltDispWinName

std::string preFiltDispWinName = "Pre-filtered disparity"

◆ right_for_matcher

cv::Mat right_for_matcher

◆ right_raw

cv::Mat right_raw

◆ right_rect

cv::Mat right_rect

◆ stereoPar