python、PyTorch图像读取与numpy转换实例


Posted in Python onJanuary 13, 2020

Tensor转为numpy

np.array(Tensor)

numpy转换为Tensor

torch.Tensor(numpy.darray)

PIL.Image.Image转换成numpy

np.array(PIL.Image.Image)

numpy 转换成PIL.Image.Image

Image.fromarray(numpy.ndarray)

首先需要保证numpy.ndarray 转换成np.uint8型

numpy.astype(np.uint8),像素值[0,255]。

同时灰度图像保证numpy.shape为(H,W),不能出现channels

这里需要np.squeeze()。彩色图象保证numpy.shape为(H,W,3)

之后Image.fromarray(numpy.ndarray)

PIL.Image.Image转换成Tensor

torchvision.transfrom

img=Image.open('00381fa010_940422.tif').convert('L')

import torchvision.transforms as transforms trans=transforms.Compose([transforms.ToTensor()])

a=trans(img)

Tensor转化成PIL.Image.Image

先转换成numpy,再转换成PIL.Image.Image

灰度图像

img=Image.open('00381fa010_940422.tif').convert('L')

import torchvision.transforms as transforms
trans=transforms.Compose([transforms.ToTensor()])

a=trans(img)
b=np.array(a) #b.shape (1,64,64)
maxi=b.max()
b=b*255./maxi
b=b.transpose(1,2,0).astype(np.uint8)
b=np.squeeze(b,axis=2)
xx=Image.fromarray(b)
xx

彩色图象

img2=Image.open('00381fa010_940422.tif').convert('RGB')
import torchvision.transforms as transforms
trans=transforms.Compose([transforms.ToTensor()])
a=trans(img2)
a=np.array(a)
maxi=a.max()
a=a/maxi*255
a=a.transpose(1,2,0).astype(np.uint8)
b=Image.fromarray(a)
b

python-opencv

import cv2
a=cv2.imread('00381fa010_940422.tif') #a.shape (64,64,3)
cv2.imwrite('asd.jpg',a)
Image.fromarray(a)
b=cv2.imread('00381fa010_940422.tif',0)#b.shape (64,64)
Image.fromarray(b)

cv2.imread()返回numpy.darray, 读取灰度图像之后shape为(64,64),RGB图像的shape为(64,64,3),可直接用Image.fromarray()转换成Image。

cv写图像时,灰度图像shape可以为(H,W)或(H,W,1)。彩色图像(H,W,3)

要从numpy.ndarray得到PIL.Image.Image,灰度图的shape必须为(H,W),彩色为(H,W,3)

对于Variable类型不能直接转换成numpy.ndarray,需要用.data转换

np.array(a.data)

以上这篇python、PyTorch图像读取与numpy转换实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中apply函数的用法实例教程
Jul 31 Python
Python 读写文件和file对象的方法(推荐)
Sep 12 Python
python正则实现提取电话功能
Feb 24 Python
目前最全的python的就业方向
Jun 05 Python
python画图把时间作为横坐标的方法
Jul 07 Python
Python split() 函数拆分字符串将字符串转化为列的方法
Jul 16 Python
pytorch梯度剪裁方式
Feb 04 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
May 18 Python
Python enumerate() 函数如何实现索引功能
Jun 29 Python
Python如何使用ElementTree解析xml
Oct 12 Python
Python实现机器学习算法的分类
Jun 03 Python
Python保存并浏览用户的历史记录
Apr 29 Python
pytorch 彩色图像转灰度图像实例
Jan 13 #Python
Ranorex通过Python将报告发送到邮箱的方法
Jan 12 #Python
python opencv实现信用卡的数字识别
Jan 12 #Python
Python 实现递归法解决迷宫问题的示例代码
Jan 12 #Python
Python3.x+迅雷x 自动下载高分电影的实现方法
Jan 12 #Python
tensorflow的计算图总结
Jan 12 #Python
python利用JMeter测试Tornado的多线程
Jan 12 #Python
You might like
PHP下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
2014/10/21 PHP
wordpress安装过程中遇到中文乱码的处理方法
2015/04/21 PHP
android上传图片到PHP的过程详解
2015/08/03 PHP
简单谈谈PHP中的trait
2017/02/25 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
JavaScript 判断浏览器是否支持SVG的代码
2013/03/21 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
简述Matlab中size()函数的用法
2016/03/20 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
ECMAScript6快速入手攻略
2016/07/18 Javascript
js中json处理总结之JSON.parse
2016/10/14 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
浅谈Vue.js
2017/03/02 Javascript
一道面试题引发的对javascript类型转换的思考
2017/03/06 Javascript
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
浅谈Angular 的变化检测的方法
2018/03/01 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
vue使用laydate时间插件的方法
2018/11/14 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
每周一练 之 数据结构与算法(Stack)
2019/04/16 Javascript
JS实现网页烟花动画效果
2020/03/10 Javascript
[00:33]2018DOTA2亚洲邀请赛TNC出场
2018/04/04 DOTA
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
python实现简单日期工具类
2019/04/24 Python
Python远程方法调用实现过程解析
2020/07/28 Python
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
个人党性分析总结
2015/03/05 职场文书
小学生五一劳动节演讲稿
2015/03/18 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
详解非极大值抑制算法之Python实现
2021/06/28 Python
Java 数据结构七大排序使用分析
2022/04/02 Java/Android
Python如何用re模块实现简易tokenizer
2022/05/02 Python