std::vector<Displacement> createDisplacementVecFromJSON(const rapidjson::Document &config_doc) { std::vector< std::vector< float > > disp_vec; if (config_doc.HasMember("displacements")) { createVectorFromJSON(config_doc, "displacements", disp_vec); } std::vector<Displacement> disp_out(disp_vec.size()); for(size_t i = 0; i < disp_vec.size(); ++i) { if (disp_vec[i].size() != 6) { throw std::runtime_error( (boost::format("Row %d in displacements does not specify x, y and z translations and rotations.") % i).str() ); } disp_out[i] << disp_vec[i][0], disp_vec[i][1], disp_vec[i][2], disp_vec[i][3], disp_vec[i][4], disp_vec[i][5]; } return disp_out; }
int main(){ name_pool.push_back("teddy"); for(int iii = 0;iii<name_pool.size();iii++){ std::string directory = "/Users/xiaotan/Data/CTMAP/"; std::string imL_name = directory+name_pool[iii]+"/imL.png"; std::string imR_name = directory+name_pool[iii]+"/imR.png"; cv::Mat imL=cv::imread(imL_name.c_str()); cv::Mat imR=cv::imread(imR_name.c_str()); cv::Mat imL_; cv::Mat imR_; cv::flip(imR,imL_,1); cv::flip(imL,imR_,1); int height = imL.rows; int width = imL.cols; double * cost = cal_cost(imL,imR,15.0/255,4.0/255,0.86,1); //15,4.0 0.86 1 ///////////////////////////////////smooth before using for guiding//////////////////////////////// /* cv::medianBlur(imL,imL,3); cv::medianBlur(imR,imR,3); cv::medianBlur(imL_,imL_,3); cv::medianBlur(imR_,imR_,3); */ imL.convertTo(imL,CV_64FC3); imR.convertTo(imR,CV_64FC3); imL = imL.mul(cv::Mat(height,width,CV_64FC3,cv::Scalar::all(1.0/255))); imR = imR.mul(cv::Mat(height,width,CV_64FC3,cv::Scalar::all(1.0/255))); imL_.convertTo(imL_,CV_64FC3); imR_.convertTo(imR_,CV_64FC3); imL_ = imL_.mul(cv::Mat(height,width,CV_64FC3,cv::Scalar::all(1.0/255))); imR_ = imR_.mul(cv::Mat(height,width,CV_64FC3,cv::Scalar::all(1.0/255))); double delta_step = 1.5; double delta_min = 0.00001; double * old_V = NULL; double * old_V_ = NULL; cv::Mat disp_L; cv::Mat disp_R; stereo_pyra( cost,imL, F_win, Eps, 0.00002, 0.00002*5, 0,old_V,disp_L); Exp_and_norm(old_V,cost,width,height); cv::Mat out_im; disp_out(imL,old_V,Disp_K,out_im); cv::imwrite("/Users/xiaotan/Data/CTMAP/teddy/result.png",out_im); free(old_V); free(old_V_); free(cost); } return 0; }