cvFindStereoCorrespondenceBM( frame1r, frame2r, disp, BMState);
/* cvShowImage("camera1", frame1);
cvShowImage("camera2", frame2); */
// cvConvertScale( disp, disp, 16, 0 );
cvNormalize( disp, vdisp, 0, 256, CV_MINMAX );
cvShowImage( "disparity", vdisp );
cvReprojectImageTo3D(disp, Image3D, &_Q);
cvShowImage("depthmap",Image3D);
этот фрагмент кода поможет вам, я надеюсь.Вот объяснение кода следующим образом: Когда я выпрямляю изображения с правой и левой камер и определяя BMstate
, я передал это в cvFindStereoCorrespondenceBM
, чтобы найти изображение несоответствия.Затем определим матрицу измерения 3 для хранения трехмерных точек как Image3D
.Посредством функции в opencv cvReprojectImageTo3D
, проходящей Q-матрицу, которую мы получаем в стерео соответствии, мы получаем набор точек 3D, соответствующих этому 2D-изображению