【opencv基础】cv::normlize归一化

 

图像数据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得到的是全黑的;

不知道为什么???

posted on 2021-10-31 21:40  鹅要长大  阅读(675)  评论(0编辑  收藏  举报

导航