需求:现有数据文件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)压缩裁剪图片的更多相关文章

  1. Python,PIL压缩裁剪图片

    自己写了用来压缩 DC 照片的,批量处理整目录文件,非常方便.需要安装 PIL #!/usr/bin/env python import Image import os import os.path ...

  2. base64字符串转文件,以及ngImgCrop裁剪图片并上传保存到服务器示例

    base64字符串是包含文件格式的文件字符串,例如:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAgAElE ...

  3. Python批量自动裁剪图片

    """用Pythonp批量裁剪图片""" from PIL import Image import matplotlib.pyplot as ...

  4. 把Python项目打包成exe文件

    我们很多时候,写好的程序需要打包成.exe文件才可以发给客户,那么今天我就来谈一谈,如何将一个写好的Python程序打包成exe文件! 首先,我们我们使用到的工具是python 3.7 和 Pyins ...

  5. 将 Python 程序打包成 .exe 文件

    1.简介 做了一个excel的风控模板,里面含有宏,我用python的第三方xlwings部署到linux后发现,linux环境并不支持xlwings. Python 程序都是脚本的方式,一般是在解析 ...

  6. [python]自动化将markdown文件转成html文件

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  7. 自制 Python小工具 将markdown文件转换成Html文件

    今天看到了一个Python库,名为markdown.瞬间就给了我一个灵感,那就是制作一个将markdown文件转换成html文件的小工具. 我的实验环境 操作系统: Windows 7 64位 旗舰版 ...

  8. [Python][小知识][NO.5] 使用 Pyinstaller 打包成.exe文件

    1.安装 pyinstaller 插件 cmd命令:pip install PyInstaller PS . o.o 不知道 easy_install 的百度吧. 2.pyinstaller 简介 他 ...

  9. vue-webpack项目自动打包压缩成zip文件批处理

    为什么需要这个? 使用vue框架开发项目,npm run build这个命令会一直用到,如果需要给后端发包,那你还要打包成zip格式的压缩包,特别是项目提测的时候,一天可能要执行重复好几次,所以才有了 ...

随机推荐

  1. Python学习笔记四:列表,购物车程序实例

    列表 切片 中括号,逗号分隔,可以一次取出多个元素,起始位置包括,结束位置不包括(顾头不顾尾) 如果取最后一个,而且不知道列表长度,可以使用负数(-1是最后一个,以此类推) 如果取最后几个,记住从左往 ...

  2. ACM数论-卡特兰数Catalan

    Catalan 原理: 令h(0)=1,h(1)=1,catalan 数满足递归式: (其中n>=2) 另类递推公式: 该递推关系的解为: (n=1,2,3,...) 卡特兰数的应用实质上都是递 ...

  3. javascript sorting/ v8 sorting

    https://github.com/mgechev/v8-sorting-test/tree/master/src/algorithms

  4. Java基础——NIO(二)非阻塞式网络通信与NIO2新增类库

    一.NIO非阻塞式网络通信 1.阻塞与非阻塞的概念  传统的 IO 流都是阻塞式的.也就是说,当一个线程调用 read() 或 write() 时,该线程被阻塞,直到有一些数据被读取或写入,该线程在 ...

  5. ARP级ping命令:arping

    一.工作原理 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议,是网络链路层的协议,在局域网中使用.主机发送信息时将包 ...

  6. 20145209 2016-2017-2 《Java程序设计》第4周学习总结

    20145209 2016-2017-2 <Java程序设计>第4周学习总结 教材学习内容总结 继承是面向对象最显著的一个特性.继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性 ...

  7. 优步UBER司机全国各地奖励政策汇总 (2月8日-2月14日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  8. 苏州Uber优步司机奖励政策(12月14日到12月20日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  9. SQL注入的原理与预防

    1. 什么是SQL注入? SQL注入是常见的网络攻击方式之一,通过SQL语句实现无账号登录,非法获取甚至篡改数据库中的数据. 2. SQL注入的思路 (1)找到SQL注入位置: (2)判断服务器类型和 ...

  10. clr via c#读书笔记五:常量和字段

    1.常量是值从不变化的符号.只能定义编译器识别的基元类型的常量.如:Boolean,Char,Byte,SByte,Int16,UInt16,Int32,UInt32,Int64,Single,Dou ...