.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格式的压缩包,特别是项目提测的时候,一天可能要执行重复好几次,所以才有了 ...
随机推荐
- 浅谈HTML5中canvas中的beginPath()和closePath()的重要性
beginPath的作用很简单,就是开始一段新的路径,但在使用canvas绘图的过程中却非常重要 先来看一小段代码: var ctx=document.getElementById("can ...
- [转]去掉IOS下的input 和textarea的内阴影
在IOS下,input 和textarea表单默认会有个内阴影,一定程度上影响视觉一致,可通过设置下面代码去掉: input{-webkit-appearance: none;}
- python神坑系列之深浅拷贝
深浅拷贝 1.注意在拷贝中只有使用了.deepcopy方法才能进行深度拷贝!其余的一律是浅拷贝 #深拷贝import copy lst = copy.deepcopy(lst1) 浅拷贝: 拷贝的是 ...
- Discuz被挂马 快照被劫持跳转该如何处理 如何修复discuz漏洞
Discuz 3.4是目前discuz论坛的最新版本,也是继X3.2.X3.3来,最稳定的社区论坛系统.目前官方已经停止对老版本的补丁更新与升级,直接在X3.4上更新了,最近我们SINE安全在对其安全 ...
- MongoDB入门---数据库&&&集合的基本操作
MongoDB作为一种nosql的数据库,它自己本身的增伤改查还有数据库集合的创建和展示与一般的数据库较之是有一部分差别的.我们今天就来看一下MongoDB的一些基本操作. 首先呢,就是先来数据 ...
- java随笔一(关于定时任务)
public class ThreadTest { class MyTask implements Runnable{ public void run() { say(); } } public vo ...
- androd hook acitivity 启动流程,替换启动的activity(Android Instrumentation)
前言:如果程序想要知道有activity启动,如果想要拦截activity,然后跳转到指定的activity怎么办? 我们看下ActivityThread 里面: private Activity p ...
- Asp.net Web Api开发Help Page 添加对数据模型生成注释的配置和扩展
在使用webapi框架进行接口开发的时候,编写文档会需要与接口同步更新,如果采用手动式的更新的话效率会非常低.webapi框架下提供了一种自动生成文档的help Page页的功能. 但是原始版本的效果 ...
- 学习Drupal一个容易被忽视的问题
刚刚修复了一个问题,一个非常小的问题,但我花了2-3小时才查明原因并修复. 总结下来我忽视了一个非常常见的问题或者没有养成一个好的习惯. 问题现象是:论坛发帖,只有editor以上权限的人可以发帖,也 ...
- MyBatis-参数处理
1.单个参数 mybatis不会做特殊处理. #{参数名/任意名}:取出参数值. 2.多个参数 mybatis会做特殊处理. 多个参数会被封装成 一个map. key:param1...paramN, ...