From 32c051320c5d865a1a8771e30a932786fba1f3c2 Mon Sep 17 00:00:00 2001 From: matlabbe Date: Fri, 6 Jan 2017 16:57:47 -0500 Subject: [PATCH] UCv2Qt: fixed min/max of depth to grayscale conversion for CV_32FC1 type --- guilib/include/rtabmap/utilite/UCv2Qt.h | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/guilib/include/rtabmap/utilite/UCv2Qt.h b/guilib/include/rtabmap/utilite/UCv2Qt.h index ca1295e0..2d7b2236 100644 --- a/guilib/include/rtabmap/utilite/UCv2Qt.h +++ b/guilib/include/rtabmap/utilite/UCv2Qt.h @@ -78,15 +78,30 @@ inline QImage uCvMat2QImage(const cv::Mat & image, bool isBgr = true) { // Assume depth image (float in meters) const float * data = (const float *)image.data; - float min=0, max=0; - uMinMax(data, image.rows*image.cols, min, max); + float min=data[0], max=data[0]; + for(unsigned int i=1; i 0) + { + if((uIsNan(min) && data[i] > 0) || + (data[i] > 0 && data[i] 0) || + (data[i] > 0 && data[i]>max)) + { + max = data[i]; + } + } + } qtemp = QImage(image.cols, image.rows, QImage::Format_Indexed8); for(int y = 0; y < image.rows; ++y, data += image.cols) { for(int x = 0; x < image.cols; ++x) { uchar * p = qtemp.scanLine (y) + x; - if(data[x] < min || data[x] > max || uIsNan(data[x])) + if(data[x] < min || data[x] > max || uIsNan(data[x]) || max == min) { *p = 0; }