图像数据H*W;
tensor归一化:
torch::Tensor SemanticSegment::NormPred(torch::Tensor pred) { // pred size: HW torch::Tensor maxval = torch::max(pred); torch::Tensor minval = torch::min(pred); torch::Tensor out = (pred-minval)/(maxval-minval); return out; }
opencv归一化:
cv::normalize(out, out, 0, 1, cv::NORM_MINMAX);
调用过程:
torch::Tensor pred = prediction[0].squeeze(); // [HW] torch::Tensor pred1 = NormPred(pred); pred1 = pred1.to(torch::kFloat32).cpu(); cv::Mat out = cv::Mat(out_h, out_w, CV_32FC1, (float*)pred1.data_ptr()); // cv::normalize(out, out, 0, 1, cv::NORM_MINMAX); out = out *255; out.convertTo(out, CV_8UC1); out = out.clone(); return out;
二者做的处理是一样的,但是最后的结果不一样;tensor数据归一化可以得到正确的灰度图,但是opencv的normlize得到的是全黑的;
不知道为什么???