需求:现有数据文件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. 一分钟完成pip安装

    很多实用Python的小伙伴都需要使用pip安装相应的包,对于初学者而已,检查遇到pip安装不成功的情况,如以下典型错误: Traceback (most recent call last): Fil ...

  2. 使用PHPExcel 读取 表格数据, 发现中文全变成 FALSE??

    出现这样的情况, 你可以看看你的表格是不是 CSV 格式的. 如果是, 那就赶紧另保存为 xls.xlsx 等格式的表格 . 因为 PHPExcel 对 Csv 的表格不感冒....

  3. Mac进度条卡在100%

  4. 【C】switch-case里面,加或不加break的区别

    int test; test = ; switch(test) { : test++; printf("value = 0"); // 打印printf,后续没有break代码,系 ...

  5. Qt上FFTW組件的编译与安裝

    Qt上FFTW組件的編譯安裝 FFTW是一個做頻譜非常實用的組件,本文講述在Windows和Linux兩個平臺使用FFTW組件.Windows下的的FFTW組件已經編譯好成爲dll文件,按照開發應用的 ...

  6. (杭电 1014)Uniform Generator

    Uniform Generator Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...

  7. 洛谷P2252 取石子游戏(威佐夫博弈)

    题目背景 无 题目描述 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后 ...

  8. 北京Uber优步司机奖励政策(12月13日)

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

  9. CF 1027 F. Session in BSU

    F. Session in BSU https://codeforces.com/contest/1027/problem/F 题意: n场考试,每场可以安排在第ai天或者第bi天,问n场考完最少需要 ...

  10. ORB-SLAM(九)LocalMapping

    LocalMapping作用是将Tracking中送来的关键帧放在mlNewKeyFrame列表中:处理新关键帧,地图点检查剔除,生成新地图点,Local BA,关键帧剔除.主要工作在于维护局部地图, ...