这是我的功能。我希望这对你有帮助。
cv::Mat Arritmic::DepthMap(cv::Mat &imageL, cv::Mat &imageR)
{
cv::Mat left_for_matcher, right_for_matcher;
cv::Mat left_disp,right_disp;
cv::Mat filtered_disp;
cv::Mat conf_map = cv::Mat(imageL.rows, imageL.cols, CV_8U);
conf_map = cv::Scalar(255);
cv::Rect ROI;
int max_disp = 16;
int wsize = 15;
cv::Ptr<cv::ximgproc::DisparityWLSFilter> wls_filter;
cv::Ptr<cv::StereoBM >left_matcher = cv::StereoBM::create(max_disp,wsize);
wls_filter = cv::ximgproc::createDisparityWLSFilter(left_matcher);
cv::Ptr<cv::StereoMatcher> right_matcher = cv::ximgproc::createRightMatcher(left_matcher);
cv::cvtColor(imageL, left_for_matcher, cv::COLOR_BGR2GRAY);
cv::cvtColor(imageR, right_for_matcher, cv::COLOR_BGR2GRAY);
left_matcher-> compute(left_for_matcher, right_for_matcher,left_disp);
right_matcher->compute(right_for_matcher,left_for_matcher, right_disp);
double lambda = 6000.0;
double sigma = 2.0;
wls_filter->setLambda(lambda);
wls_filter->setSigmaColor(sigma);
wls_filter->filter(left_disp, imageL, filtered_disp, right_disp);
conf_map = wls_filter->getConfidenceMap();
ROI = wls_filter->getROI();
cv::Mat raw_disp_vis;
cv::ximgproc::getDisparityVis(left_disp,raw_disp_vis, 21.0);
cv::Mat filtered_disp_vis;
cv::ximgproc::getDisparityVis(filtered_disp,filtered_disp_vis, 15.0);
return raw_disp_vis;
}