30 #include <opencv2/opencv.hpp>
40 #define USE_HALF_SIZE_DISPARITY
72 int main(
int argc,
char *argv[])
95 std::cerr <<
"Cannot open camera video capture" << std::endl;
96 std::cerr <<
"See verbosity level for more details." << std::endl;
101 std::cout <<
"Connected to camera sn: " << sn << std::endl;
105 std::string calibration_file;
107 unsigned int serial_number = sn;
111 std::cerr <<
"Could not load calibration file from Stereolabs servers" << std::endl;
114 std::cout <<
"Calibration file found. Loading..." << std::endl;
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;
126 cameraMatrix_left, cameraMatrix_right);
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;
139 if(frame.
data!=
nullptr)
167 #ifdef USE_HALF_SIZE_DISPARITY
240 int key = cv::waitKey( 5 );
241 if(key==
'q' || key==27)
243 std::cout <<
"Save current stereo parameters? [Y/N]" << std::endl;
244 key = cv::waitKey(-1);
245 if(key==
'Y' || key==
'y')
251 if(key==
'l' || key==
'L')
283 if(key==
's' || key==
'S')
288 if(key==
'r' || key==
'R')
319 #ifdef USE_HALF_SIZE_DISPARITY
338 #ifdef USE_HALF_SIZE_DISPARITY
342 std::cout <<
"Start stereo matching..." << std::endl;
344 std::cout <<
"... finished stereo matching" << std::endl;
346 double elapsed = stereo_clock.
toc();
347 std::cout <<
"Stereo processing: " << elapsed <<
" sec - Freq: " << 1./elapsed << std::endl;
353 #ifdef USE_HALF_SIZE_DISPARITY
367 if(newBlockSize%2!=1)
423 if(newNumDisparities%16!=0)
426 newNumDisparities = newNumDisparities/16;
428 newNumDisparities = newNumDisparities/16 + 1;
429 newNumDisparities*=16;
458 std::cout <<
"New 'mode' value: " <<
stereoPar.
mode << std::endl;
The VideoCapture class provides image grabbing functions and settings control for all the Stereolabs ...
const Frame & getLastFrame(uint64_t timeout_msec=100)
Get the last received camera image.
void getFrameSize(int &width, int &height)
Get the size of the camera frame.
bool initializeVideo(int devId=-1)
Open a ZED camera using the specified ID or searching for the first available.
int getSerialNumber()
Retrieve the serial number of the connected camera.
@ FPS_30
30 Frames per second. Not available for RESOLUTION::HD2K.
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.
The camera configuration parameters.
RESOLUTION res
Camera resolution.
FPS fps
Frames per second.
int main(int argc, char *argv[])
sl_oc::tools::StereoSgbmPar stereoPar
std::string preFiltDispWinName
void on_trackbar_mode(int newMode, void *)
void on_trackbar_speckleRange(int newSpeckleRange, void *)
void on_trackbar_num_disparities(int newNumDisparities, void *)
sl_oc::video::VideoParams params
void applyStereoMatching()
cv::Mat right_for_matcher
void on_trackbar_min_disparities(int newMinDisparities, void *)
void on_trackbar_preFilterCap(int newPreFilterCap, void *)
void on_trackbar_disp12MaxDiff(int newDisp12MaxDiff, void *)
void on_trackbar_block_size(int newBlockSize, void *)
void on_trackbar_uniquenessRatio(int newUniquenessRatio, void *)
void on_trackbar_speckleWindowSize(int newSpeckleWindowSize, void *)
cv::Ptr< cv::StereoSGBM > left_matcher