将tensor转换为图像_tensor转int

将tensor转换为图像_tensor转int将tensor转换为numpy

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

将tensor转换为numpy

import tensor 
import numpy as np
def tensor2img(tensor, out_type=np.uint8, min_max=(0, 1)):
    ''' Converts a torch Tensor into an image Numpy array Input: 4D(B,(3/1),H,W), 3D(C,H,W), or 2D(H,W), any range, RGB channel order Output: 3D(H,W,C) or 2D(H,W), [0,255], np.uint8 (default) '''
    if hasattr(tensor, 'detach'):
        tensor = tensor.detach()
    tensor = tensor.squeeze().float().cpu().clamp_(*min_max)  # clamp
    tensor = (tensor - min_max[0]) / (min_max[1] - min_max[0])  # to range [0,1]
    n_dim = tensor.dim()
    if n_dim == 4:
        n_img = len(tensor)
        img_np = make_grid(tensor, nrow=int(math.sqrt(n_img)), normalize=False).numpy()
        img_np = np.transpose(img_np[[2, 1, 0], :, :], (1, 2, 0))  # HWC, BGR
    elif n_dim == 3:
        img_np = tensor.numpy()
        img_np = np.transpose(img_np[[2, 1, 0], :, :], (1, 2, 0))  # HWC, BGR
    elif n_dim == 2:
        img_np = tensor.numpy()
    else:
        raise TypeError(
            'Only support 4D, 3D and 2D tensor. But received with dimension: {:d}'.format(n_dim))
    if out_type == np.uint8:
        img_np = np.clip((img_np * 255.0).round(), 0, 255)
        # Important. Unlike matlab, numpy.unit8() WILL NOT round by default.
    return img_np.astype(out_type)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183609.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • AssertValid和Dump 这两个函数的作用[通俗易懂]

    AssertValid和Dump 这两个函数的作用[通俗易懂]
    AssertValid函数是用来判断表达式的合法性或正确性,如果不正确或不合法则终止程序并返回相应的提示信息 
     如AssertValid(t==0);//用来判断t是否等于0,如果t!=0则终止程序 
     Dump函数一般用来显示debug信息的,其函数中的内容一般在debug时,在debug窗口中才能看到。
    CObject::AssertValid 成员函数提供对对象内部状态的运行时检查。尽管从 CObject 派生类时不需要重写 Asse

    2022年7月14日
    18
  • kettle教程(1) 简单入门、kettle简单插入与更新。打开kettle

    kettle教程(1) 简单入门、kettle简单插入与更新。打开kettle本文要点:Kettle的建立数据库连接、使用kettle进行简单的全量对比插入更新:kettle会自动对比用户设置的对比字段,若目标表不存在该字段,则新插入该条记录。若存在,则更新。 Kettle简介:Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。Kettle中文名称叫水壶,该项目的主程序员MATT希望把各种数…

    2022年5月10日
    37
  • configparser.nosectionerror_sqlsession was not registered

    configparser.nosectionerror_sqlsession was not registered在ASP.NETCore中如果在DataProtection中使用了PersistKeysToFileSystem或PersistKeysToFileSystemservices.AddDataProtection().PersistKeysToFileSystem();services.AddDataProtection().PersistKeysToRedis();会在日…

    2026年1月21日
    2
  • STM32CubeMX实战教程(七)——TFT_LCD液晶显示(附驱动代码)

    STM32CubeMX实战教程(七)——TFT_LCD液晶显示(附驱动代码)液晶显示前言材料TFT_LCD前言想来想去,也不知道更新什么内容比较好了,犹豫了好久还是先跟大家讲讲液晶显示的配置吧,毕竟我觉得这个在很多项目中都非常实用,我个人是比较喜欢用一块TFT液晶来做显示终端的,大大的屏幕显示什么都方便,接到产品上面也显得特别高端,当然在考虑成本的情况下OLED和12864这些也是不错的选择。材料STM32F4正点原子探索者开发板原理图TFT_LCD(我这里用的是4.3寸的液晶,芯片为ILI9341,但理论上本驱动程序支持的芯片包括ILI9341/ILI9325/RM

    2022年5月10日
    68
  • path是什么意思啊_on the path

    path是什么意思啊_on the path投影投影是JMESPath的关键特性之一。它允许您将表达式应用于元素集合。有五种投影:列表投影切片投影对象投影展平投影过滤投影处理投影需要注意的点投影分为两个步骤。左侧(LHS)创建一

    2022年7月29日
    9
  • Github搭建个人博客(2019最新版,亲测)

    Github搭建个人博客(2019最新版,亲测)版权声明:本文为徐代龙原创文章,未经徐代龙允许不得转载。https://blog.csdn.net/xudailong_blog/article/details/78762262(一)前言:建议:慢慢看,也就这一篇用心了点写说来话长,一把辛酸泪,可算是弄好了。1起因:在很早很早,大一的时候,估计快记不得日子了,那时候来到PC吧创业团队,一个大一级的学长通过…

    2022年5月27日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号