Skip to content
Snippets Groups Projects
Commit f992385c authored by Sebastian Hahta's avatar Sebastian Hahta
Browse files

optical flow error message

parent 19a3c41e
No related branches found
No related tags found
1 merge request!157feature/vision parameters
Pipeline #16111 failed
...@@ -168,20 +168,6 @@ bool FixstarsSGM::updateOFDisparityFilter() { ...@@ -168,20 +168,6 @@ bool FixstarsSGM::updateOFDisparityFilter() {
void FixstarsSGM::compute(ftl::rgbd::Frame &frame, cv::cuda::Stream &stream) void FixstarsSGM::compute(ftl::rgbd::Frame &frame, cv::cuda::Stream &stream)
{ {
/*if (!frame.hasChannel(ftl::rgbd::kChanLeftGray))
{
auto &rgb = frame.getChannel<GpuMat>(ftl::rgbd::kChanLeft, stream);
auto &gray = frame.setChannel<GpuMat>(ftl::rgbd::kChanLeftGray);
cv::cuda::cvtColor(rgb, gray, cv::COLOR_BGR2GRAY, 0, stream);
}
if (!frame.hasChannel(ftl::rgbd::kChanRightGray))
{
auto &rgb = frame.getChannel<GpuMat>(ftl::rgbd::kChanRight, stream);
auto &gray = frame.setChannel<GpuMat>(ftl::rgbd::kChanRightGray);
cv::cuda::cvtColor(rgb, gray, cv::COLOR_BGR2GRAY, 0, stream);
}*/
const auto &l = frame.get<GpuMat>(Channel::Left); const auto &l = frame.get<GpuMat>(Channel::Left);
const auto &r = frame.get<GpuMat>(Channel::Right); const auto &r = frame.get<GpuMat>(Channel::Right);
auto &disp = frame.create<GpuMat>(Channel::Disparity, Format<float>(l.size())); auto &disp = frame.create<GpuMat>(Channel::Disparity, Format<float>(l.size()));
...@@ -202,41 +188,41 @@ void FixstarsSGM::compute(ftl::rgbd::Frame &frame, cv::cuda::Stream &stream) ...@@ -202,41 +188,41 @@ void FixstarsSGM::compute(ftl::rgbd::Frame &frame, cv::cuda::Stream &stream)
stream.waitForCompletion(); stream.waitForCompletion();
ssgm_->execute(lbw_.data, rbw_.data, dispt_.data); ssgm_->execute(lbw_.data, rbw_.data, dispt_.data);
GpuMat left_pixels(dispt_, cv::Rect(0, 0, max_disp_, dispt_.rows)); // GpuMat left_pixels(dispt_, cv::Rect(0, 0, max_disp_, dispt_.rows));
left_pixels.setTo(0); // left_pixels.setTo(0);
cv::cuda::threshold(dispt_, dispt_, 4096.0f, 0.0f, cv::THRESH_TOZERO_INV, stream); cv::cuda::threshold(dispt_, dispt_, 4096.0f, 0.0f, cv::THRESH_TOZERO_INV, stream);
#ifdef HAVE_OPTFLOW GpuMat dispt_scaled;
if (use_off_) { if (l.size() != size_)
frame.upload(Channel::Flow, stream); {
stream.waitForCompletion(); scaleDisparity(l.size(), dispt_, dispt_scaled, stream);
off_.filter(dispt_, frame.get<GpuMat>(Channel::Flow), stream); }
else
{
dispt_scaled = dispt_;
} }
#endif
// TODO: filter could be applied after upscaling (to the upscaled disparity image) // TODO: filter could be applied after upscaling (to the upscaled disparity image)
if (use_filter_) if (use_filter_)
{ {
filter_->apply( filter_->apply(
dispt_, dispt_,
(l.size() == size_) ? l : l_scaled, l,
dispt_, dispt_,
stream stream
); );
} }
GpuMat dispt_scaled;
if (l.size() != size_)
{
scaleDisparity(l.size(), dispt_, dispt_scaled, stream);
}
else
{
dispt_scaled = dispt_;
}
dispt_scaled.convertTo(disp, CV_32F, 1.0f / 16.0f, stream); dispt_scaled.convertTo(disp, CV_32F, 1.0f / 16.0f, stream);
#ifdef HAVE_OPTFLOW
// TODO: Optical flow filter expects CV_32F
if (use_off_) {
frame.upload(Channel::Flow, stream);
stream.waitForCompletion();
off_.filter(disp, frame.get<GpuMat>(Channel::Flow), stream);
}
#endif
} }
void FixstarsSGM::setMask(Mat &mask) { void FixstarsSGM::setMask(Mat &mask) {
......
...@@ -41,6 +41,11 @@ void OFDisparityFilter::filter(ftl::rgbd::Frame &frame, cv::cuda::Stream &stream ...@@ -41,6 +41,11 @@ void OFDisparityFilter::filter(ftl::rgbd::Frame &frame, cv::cuda::Stream &stream
void OFDisparityFilter::filter(cv::cuda::GpuMat &disp, cv::cuda::GpuMat &optflow, cv::cuda::Stream &stream) void OFDisparityFilter::filter(cv::cuda::GpuMat &disp, cv::cuda::GpuMat &optflow, cv::cuda::Stream &stream)
{ {
if (disp.type != CV_32FC1) {
LOG(ERROR) << "Optical flow filter expects CV_32FC1 (TODO)";
return;
}
ftl::cuda::optflow_filter(disp, optflow, disp_old_, n_max_, threshold_, stream); ftl::cuda::optflow_filter(disp, optflow, disp_old_, n_max_, threshold_, stream);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment