void Uniform_cost_search(int row,int start){ int i = row,j = start,m; int ret; for(j = start;j<n;j++){ if(conn[i][j] == 1){ tmp_array[ta++] = j; }else{ } } ret = find_low_path(tmp_array,0,ta-1); route[r++] = tmp_array[ret]; t1 = tmp_array[ret]; ta = 0; tmp_array[ta] = 0; if(t1 == d){ initialize(p,np); copy_path_to_struct(p,np,route,tcost); p[np].cost = cal_cost(p,0); np++; return; }else{ Uniform_cost_search(t1,1); } }
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; }