PIL,cv2读取类型及 numpy,tensor格式转换

2023-10-27

PIL读取图片格式以及数据转换操作

PIL库读取的图片格式是 H x W x C 格式的。比如一张图是128x128x3,图片格式PIL.PngImagePlugin.PngImageFile。
通过numpy.array(img)或者numpy.asarray(img),转化为uint8的数值数组形式,数值范围在0-255之间。两个函数的区别在于array函数会copy一个新的副本,占用新的空间,asarray不会。

import numpy as np
from PIL import Image
img = Image.open(path)
img = np.array(img)  # img是数值范围在0-255之间的uint8格式数组
# 注意img的形状是 H x W x C
# 如果想改变数组形状,可以使用transpose(idx1, idx2, idx3)

2.转换为tensor形式:

在Pytorch中,图片张量形式是 C x H x W,所以要把数组转置转置,用到transpose

import torch
from torchvision import transforms

# 1.
img = np.array(img).transpose(2, 0, 1)  # 表示C x H x W
img1 = torch.tensor(img / 255)  # 神经网络里的张量数值一般在0-1之间归一化处理,所以除以255
# 此时获得的数组就是形状为C x H x W的张量,数值0-1
# dtype=torch.float64

# 2.
# 或者经过transforms处理
trans = transforms.Compose([
	transforms.ToTensor()
])
img2 = trans(img)  # 自动转化为形状CxHxW的张量形式

3.由tensor转换为图片

经过tensor的处理过程之后,要将tensor形式转换为图片。
用到numpy()函数,fromarray()函数。uint8函数

 # 这里将tensor形式用numpy()函数转为数组形式,
 # 并且用transpose将数组转置为PIL能够处理的WxHxC形式。
nimg = img.numpy().transpose(1,2,0)
img = nimg * 255 # 将原来tensor里0-1的数值乘以255,以便转为uint8数据形式,uint8是图片的数值形式。
#那么此时img就是原料,通过两种方式将img化为图片
# 第一种
Image.fromarray(np.uint8(img)) # eg1
# 第二种
Image.fromarray(img.astype(np.uint8))#eg2

or 使用

transforms中有直接将tensor转换成pil文件的,
transforms.ToPILImage

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PIL,cv2读取类型及 numpy,tensor格式转换 的相关文章

随机推荐

  • ERROR: Cannot uninstall ‘wrapt‘. It is a distutils installed project and thus we cannot accurately..

    1 问题描述 pip install tensorflow 报错 ERROR Cannot uninstall wrapt It is a distutils installed project and thus we cannot acc
  • 什么是管理能力,管理者的品格有哪些

    走上管理岗位要明白 到底什么是管理能力 1 解决问题的能力 管理者必须面对许多难以解决的 甚至十分不明确的问题 但是只要采用合 适的方法 几乎所有的问题都能成功解决 2 沟通协调的能力 管理者在日常工作中妥善处理好上级 同级 下级等各种关系
  • IDEA产生及相应的应用

    思考 在用记事本编写程序代码的过程中 需要配合使用各种命令在控制台调控编译 给我们的实际操作带来了不小的工作量 如果初学者不能够调整好心态一步步操作 很容易放弃 如何能够让初学者和开发者用起来更方便快捷呢 深度的思考就会有创新 由此一个新的
  • 区块链开发指南_区块链软件开发详解

    开发业务层区块链应用 Hyperledger fabric目前支持java nodejs go和python语言的sdk 供用户选择用不同的语言开发上层应用 使用相应的sdk调用部署在区块链上的链码 以下示例中我们选择使用go语言开发业务层
  • 《Python》计算机视觉编程

    基本的图像操作处理 PIL 目前pycharm使用的是pillow库 from PIL import Image pil im Image open empire jpg 上述代码的返回值pil im是一个PIL图像对象 图像的颜色转换可以
  • Cisco模拟器-ospf配置实验(验证与负载均衡)

    要求 如图运行OSPF区域 区域1要求用OSPF明文验证 区域0要求用可靠的验证方式 要求R4去往R1的环回从R2走 R1上看到去往R4的两条等价负载均衡 基础配置 R1 R1 config int f0 0 R1 config if ip
  • django2.x/3.x 前端页面在debug模式中找不到动态文件static

    修改setting配置 STATIC URL static STATICFILES DIRS os path join BASE DIR static html页面中 load static bootstrap bootstrap min
  • objdump说明

    objdump有点象那个快速查看之流的工具 就是以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息 使用objdump显示vxWorks的文件头信息以及入口地址例子 D ftproot gt C Tornado2 2Arm hos
  • css文本超出容器宽度自动换行及超过行数加省略号...

    css文本超过div的宽度时 让它进行自动换行 并且超过div高度时候 在最后一行加省略号 废话不多说 上代码 display webkit box overflow hidden text overflow ellipsis word w
  • 基站分布图,通过基站定位数据来看google基站数据分布

    原文地址 http hi baidu com ant mobile blog item 6d619b11042fd2f7c2ce7950 html 无论是应用更广泛的gps定位 还是基站定位 Wi Fi定位 都需要依托于强大精确的地图 而g
  • STM32CubeIDE使用笔记(02):STM32CubeMX配置与代码生成

    文章目录 目的 用户界面 引脚输出和配置 时钟配置 项目管理 工具 代码生成 更换芯片 总结 目的 STM32CubeIDE中整合了STM32CubeMX用来配置芯片资源生成初始化代码 本篇将介绍STM32CubeMX使用方法 用户界面 界
  • pycharm如何打开历史_分享Pycharm中一些不为人知的技巧

    工欲善其事必先利其器 Pycharm 是最受欢迎的Python开发工具 它提供的功能非常强大 是构建大型项目的理想工具之一 如果能挖掘出里面实用技巧 能带来事半功倍的效果 以下操作都是基于 Windows 平台下的默认KeyMap设置 在
  • MongoDB局域网访问

    在安装目录下的配置文件中修改IP 执行命令 mongod config C Program Files MongoDB Server 4 4 bin mongod cfg logpath E MangoDB log mongod log l
  • Spring面试题

    1 Spring是什么 1 Spring是 个轻量级的控制反转和 向切 的容器框架 2 通过控制反转 IoC 的技术达到松耦合的 的 3 包含并管理应 对象 Bean 的配置和 命周期 这个意义上是 个容器 4 可以整合多种技术 2 谈谈你
  • 现金额大写转换函数

    现金额大写转换函数 ecDo upDigit 168752632 result 人民币壹亿陆仟捌佰柒拾伍万贰仟陆佰叁拾贰元整 ecDo upDigit 1682 result 人民币壹仟陆佰捌拾贰元整 ecDo upDigit 1693 r
  • springboot 项目控制台输出数据库数据

    springboot 项目控制台输出数据库数据 项目目录 修改application properties文件 连接数据库和本地服务器 数据库表及数据 Mapper层 package com example poem mapper impo
  • Pytorch学习笔记--常用函数torch.optim.SGD()总结3

    1 torch optim SGD 函数拓展 import torch LEARNING RATE 0 01 梯度下降学习率 MOMENTUM 0 9 冲量大小 WEIGHT DECAY 0 0005 权重衰减系数 optimizer to
  • maya中的场景资产管理sceneAssembly

    目录 简介 为什么要使用 作用 使用方法 简单的流程介绍 简介 这是maya中的一个流程资产管理插件 用于大场景的整合 内部的工作原理有点类似是reference的封装 为什么要使用 在生产制作中 一个好的流程 都是各个环节并行的 但是上游
  • 在Spring Security中,如何重写AuthenticationProvider类的authenticate方法,以接收json格式的登录请求...

    在Spring Security中 可以通过实现AuthenticationProvider接口并覆盖其authenticate 方法来重写AuthenticationProvider类 以接收JSON格式的登录请求
  • PIL,cv2读取类型及 numpy,tensor格式转换

    PIL读取图片格式以及数据转换操作 PIL库读取的图片格式是 H x W x C 格式的 比如一张图是128x128x3 图片格式PIL PngImagePlugin PngImageFile 通过numpy array img 或者num