.mat转成.npy文件+Python(Pytorch)压缩裁剪图片
需求:现有数据文件V1.mat,里面包含多个数据集,现需将里面的images数据集提取出来,然后进行压缩裁剪成指定大小
V1.mat数据集目录:

1、从mat文件中提取数据(使用Python)
V1.mat文件太大,在此不提供
import numpy as np
import h5py mat = h5py.File('./V1.mat') print(mat['images'].shape)#查看mat文件中images的格式
#(2284, 3, 640, 480) images = np.transpose(mat['images'])
#转置,images是numpy.ndarray格式的 print(images)#控制台输出数据
print(images.shape)#输出数据格式
#(480, 640, 3, 2284) np.save('./images', images)#保存数据,会生成一个images.npy文件
print(images)输出的数据:

2、将数据恢复成图片并保存
import numpy as np
import torchvision.transforms as transforms dataset = np.load('./images.npy') for i in range(dataset.shape[3]):
img_tensor = dataset[:, :, :, i]#
# print(img_tensor.shape)#(480, 640, 3) img = transforms.ToPILImage()(img_tensor)#转成图片
# print(img.size)#(640, 480) #img.show()
img.save('./Test/%d.jpg' % i)
转成的图片:

3、压缩并裁剪图片
这个程序包含了第二部分,等比例压缩后再裁剪,可以保持原图片比例,但会丢失一些边界信息。直接压缩可以保存原图片信息,但会变形。。。
import numpy as np
import torchvision.transforms as transforms
import matplotlib.pyplot as plt
from PIL import Image dataset = np.load('./V1/images.npy')#图片文件目录 '''
等比例压缩
'''
def scale_high(img, target_high):
ow, oh = img.size
if (ow == target_high):
return img
h = target_high
w = int(target_high * ow / oh)
return img.resize((w, h), Image.BICUBIC) '''
遍历图片
等比例压缩后裁剪
'''
def ScaleAndCrop():
for i in range(1): #dataset.shape[3] #
img_tensor = dataset[:, :, :, i] #(480, 640, 3, 2284)
#print(img_tensor.shape) #(480, 640, 3)
img = transforms.ToPILImage()(img_tensor)#数据转成图片
# print(img.size) #(640, 480)
# img.show()
scale_img = scale_high(img,256) #等比例压缩图片
# print(scale_img.size) #(341, 256)
# scale_img.show()
crop = transforms.RandomCrop((256, 256)) #裁剪图片
crop_img = crop(scale_img) #
# crop_img.show()
crop_img.save('./Picture/%d.jpg' % i) #保存图片 '''
遍历图片,直接缩放
'''
def CropDirc():
for i in range(1): #dataset.shape[3] #
img_tensor = dataset[:, :, :, i] #(480, 640, 3, 2284)
#print(img_tensor.shape) #(480, 640, 3)
img = transforms.ToPILImage()(img_tensor)#数据转成图片
# print(img.size) #(640, 480)
# img.show()
crop = transforms.Scale([256, 256])
crop_img = crop(img) # print(crop_img.size) # (256, 256)
# crop_img.show()
crop_img.save('./Picture/%d.jpg' % i)
.mat转成.npy文件+Python(Pytorch)压缩裁剪图片的更多相关文章
- Python,PIL压缩裁剪图片
自己写了用来压缩 DC 照片的,批量处理整目录文件,非常方便.需要安装 PIL #!/usr/bin/env python import Image import os import os.path ...
- base64字符串转文件,以及ngImgCrop裁剪图片并上传保存到服务器示例
base64字符串是包含文件格式的文件字符串,例如:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAgAElE ...
- Python批量自动裁剪图片
"""用Pythonp批量裁剪图片""" from PIL import Image import matplotlib.pyplot as ...
- 把Python项目打包成exe文件
我们很多时候,写好的程序需要打包成.exe文件才可以发给客户,那么今天我就来谈一谈,如何将一个写好的Python程序打包成exe文件! 首先,我们我们使用到的工具是python 3.7 和 Pyins ...
- 将 Python 程序打包成 .exe 文件
1.简介 做了一个excel的风控模板,里面含有宏,我用python的第三方xlwings部署到linux后发现,linux环境并不支持xlwings. Python 程序都是脚本的方式,一般是在解析 ...
- [python]自动化将markdown文件转成html文件
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- 自制 Python小工具 将markdown文件转换成Html文件
今天看到了一个Python库,名为markdown.瞬间就给了我一个灵感,那就是制作一个将markdown文件转换成html文件的小工具. 我的实验环境 操作系统: Windows 7 64位 旗舰版 ...
- [Python][小知识][NO.5] 使用 Pyinstaller 打包成.exe文件
1.安装 pyinstaller 插件 cmd命令:pip install PyInstaller PS . o.o 不知道 easy_install 的百度吧. 2.pyinstaller 简介 他 ...
- vue-webpack项目自动打包压缩成zip文件批处理
为什么需要这个? 使用vue框架开发项目,npm run build这个命令会一直用到,如果需要给后端发包,那你还要打包成zip格式的压缩包,特别是项目提测的时候,一天可能要执行重复好几次,所以才有了 ...
随机推荐
- angular2配置使用ng2-bootstrap
第一步,安装.进入项目目录 npm install ng2-bootstrap bootstrap --save 第二步,angular-cli 配置 ng2-bootstrap src/.ang ...
- sourcetree .git 强制忽略指定文件不提交
在公司写项目,大部分都会用到 svn 或 git 提交代码到服务器.我们公司用的GIT,每个程序员有自己的独立分支,各写各的代码互不冲突,最终合并到主分支再解决相同代码冲突问题.这时候会遇到一些配置文 ...
- 关于一个flask的服务接口实战(flask-migrate,flask-script,SQLAlchemy)
前言 最近接到一个接收前端请求的需求,需要使用python编写,之前没有写过python,很多技术没有用过,在这里做一个学习记录,如有错误,请不了赐教. Flask Api文档管理 使用Falsk A ...
- vmware 虚拟机设置 redhat 桥接模式
1.设置 vmware 网络模式 2.设置 linux 网络模式
- [转]Visual C++ 和 C++ 有什么区别?
注:本篇内容转载与网络,方便自己学习,如有侵权请您联系我删除,谢谢. 有位同学问我“Visual C++和C++有什么区别?”,这的确是初学者会感到困惑的问题,比较常见.除此之外,还有“先学C++好, ...
- 分治与递归-找k个临近中位数的数
问题描述:给定由n个互不相同的数组成的集合S以及正整数k≤n,试设计一个O(n)时间算法找出S中最接近S的中位数的k个数. 算法描述: 用线性时间选择实现的算法找到中位数 S’=除去中位数外的S S& ...
- char[] 转换string时的自动截断问题
在char[] 转换string时可以直接转换,但当用char[]读取一个二进制文件之后,若char[] 中包含有'\0'时,在转换时会被string检测到并认为字符串末尾,后面内容会被截断,导致转换 ...
- title中添加小图标
<title>标签中不能添加图片,但是可以添加小图标. 步骤: 1.做一个16 X 16像素的ico格式的图标.具体操作方法是,先在Photoshop中做一个透明背景的16 X 16像素P ...
- Django中的模型继承
1.使用最原始的方式继承 class Animal(models.Model): name = models.CharField(max_length=20) age = models.Integer ...
- c++动态库封装及调用(1、动态库介绍)
1.一个程序从源文件编译生成可执行文件的步骤: 预编译 --> 编译 --> 汇编 --> 链接 (1)预编译,即预处理,主要处理在源代码文件中以“#”开始的预编译指令,如宏展开 ...