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

不知道为什么???

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-07-31
  • 2022-12-23
  • 2022-12-23
  • 2022-01-15
  • 2021-04-05
  • 2021-09-04
猜你喜欢
  • 2022-12-23
  • 2021-11-12
  • 2022-12-23
  • 2022-12-23
  • 2021-09-03
  • 2021-10-11
  • 2022-12-23
相关资源
相似解决方案