diff --git a/cv-node/src/algorithms/opencv_sgbm.cpp b/cv-node/src/algorithms/opencv_sgbm.cpp index 3e003bdb1ccd75eec7c7e6e6f76280e240a84c98..fda8ff13eda864ab4dbd1d7138d7ea851e58c8e0 100644 --- a/cv-node/src/algorithms/opencv_sgbm.cpp +++ b/cv-node/src/algorithms/opencv_sgbm.cpp @@ -25,14 +25,17 @@ OpenCVSGBM::OpenCVSGBM(nlohmann::json &config) : Disparity(config) { } void OpenCVSGBM::compute(const cv::Mat &l, const cv::Mat &r, cv::Mat &disp) { + Mat lbw, rbw; Mat left_disp; Mat right_disp; - left_matcher_-> compute(l, r,left_disp); - right_matcher_->compute(r,l, right_disp); + cv::cvtColor(l, lbw, COLOR_BGR2GRAY); + cv::cvtColor(r, rbw, COLOR_BGR2GRAY); + left_matcher_-> compute(lbw, rbw,left_disp); + right_matcher_->compute(rbw,lbw, right_disp); wls_filter_->filter(left_disp,l,disp,right_disp); - //float f = 255.0f / static_cast<float>(max_disp_); - //disp *= f; + // WHY 12!!!!!! + disp.convertTo(disp, CV_32F, 12.0 / max_disp_); } diff --git a/cv-node/src/algorithms/rtcensus.cu b/cv-node/src/algorithms/rtcensus.cu index e722dbac7c592602ba33d99ccc32e46f1e64d490..0fc81808888101fbb51bcf2b022ca7f9c2c254b5 100644 --- a/cv-node/src/algorithms/rtcensus.cu +++ b/cv-node/src/algorithms/rtcensus.cu @@ -331,7 +331,7 @@ void rtcensus_call(const PtrStepSz<uchar4> &l, const PtrStepSz<uchar4> &r, const ftl::cuda::TextureObject<uint2> censusTexRight(r.cols, r.rows); ftl::cuda::TextureObject<float> dispTexLeft(l.cols, l.rows); ftl::cuda::TextureObject<float> dispTexRight(r.cols, r.rows); - ftl::cuda::TextureObject<float> dispTex(r.cols, r.rows); + ftl::cuda::TextureObject<float> dispTex(disp); //r.cols, r.rows); // Calculate the census for left and right ftl::cuda::sparse_census(texLeft, texRight, censusTexLeft, censusTexRight); @@ -355,15 +355,15 @@ void rtcensus_call(const PtrStepSz<uchar4> &l, const PtrStepSz<uchar4> &r, const - grid.x = 4; + /*grid.x = 4; grid.y = l.rows; threads.x = l.cols; size_t filter_smem = sizeof(uchar4) * l.cols; filter_kernel<<<grid, threads, filter_smem>>>(texLeft.cudaTexture(), dispTex.cudaTexture(), prevDisp.cudaTexture(), prevImage.cudaTexture(), disp, num_disp); - cudaSafeCall( cudaGetLastError() ); + cudaSafeCall( cudaGetLastError() );*/ - prevDisp.free(); - prevDisp = disp; + //prevDisp.free(); + //prevDisp = disp; prevImage.free(); prevImage = texLeft; diff --git a/cv-node/src/main.cpp b/cv-node/src/main.cpp index e0dbaa00b5d178fa834a9c23b2ef24e84ee88aef..9e3689bdb39120e1e3349ddba1ed1c7e33a5ee42 100644 --- a/cv-node/src/main.cpp +++ b/cv-node/src/main.cpp @@ -86,6 +86,29 @@ static void process_options(const map<string,string> &opts) { } } +static string type2str(int type) { + string r; + + uchar depth = type & CV_MAT_DEPTH_MASK; + uchar chans = 1 + (type >> CV_CN_SHIFT); + + switch ( depth ) { + case CV_8U: r = "8U"; break; + case CV_8S: r = "8S"; break; + case CV_16U: r = "16U"; break; + case CV_16S: r = "16S"; break; + case CV_32S: r = "32S"; break; + case CV_32F: r = "32F"; break; + case CV_64F: r = "64F"; break; + default: r = "User"; break; + } + + r += "C"; + r += (chans+'0'); + + return r; +} + static void run(const string &file) { // TODO Initiate the network @@ -136,8 +159,7 @@ static void run(const string &file) { // TODO Check other algorithms convert to BW disparity->compute(l,r,disparity32F); - disparity32F.convertTo(disparity32F, CV_32F); - disparity32F += 10.0f; // TODO REMOVE + //disparity32F += 10.0f; // TODO REMOVE // Clip the left edge //Rect rect((int)config["disparity"]["maximum"],7,disparity32F.cols-(int)config["disparity"]["maximum"],disparity32F.rows-14); @@ -180,8 +202,10 @@ static void run(const string &file) { break; } } else if (config["display"]["disparity"]) { - disparity32F = disparity32F / (float)config["disparity"]["maximum"]; - disparity32F.convertTo(disparity32F,CV_8U,255.0f); + //if (disparity32F.type() == CV_32FC1) { + //disparity32F = disparity32F / (float)config["disparity"]["maximum"]; + disparity32F.convertTo(disparity32F,CV_8U,255.0f / (float)config["disparity"]["maximum"]); + //} //normalize(disparity32F, disparity32F, 0, 255, NORM_MINMAX, CV_8U); applyColorMap(disparity32F, disparity32F, cv::COLORMAP_JET); cv::imshow("Disparity", disparity32F);