.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格式的压缩包,特别是项目提测的时候,一天可能要执行重复好几次,所以才有了 ...
随机推荐
- JS this总结
JS中一切皆对象,this关键字出现在对象定义时的成员(属性和方法)里,因此this指向的是一个JS对象,这个JS对象具体是哪一个的确定是在运行时确定的. 非严格模式: 1.作为对象成员:对象调用对象 ...
- PHP 通过命令异步执行PHP程序
通过PHP执行系统命令调用PHP执行程序,让进程挂起到后台执行,不影响用户页面交互. 控制器调用命令,不用等待,后台创建一个进程执行程序. system(“nohup php command.php ...
- LCD触屏驱动
tiny4412多点触摸屏驱动程序(基于I2C协议): #include <linux/kernel.h> #include <linux/module.h> #include ...
- ES基础知识与高频考点梳理
知识点梳理目录列表 变量类型 JS的数据类型分类和判断 值类型和引用类型 原型与原型链(继承) 原型和原型链的定义 继承写法 作用域和闭包 执行上下文 this 闭包是什么 异步 同步VS异步 异步和 ...
- Python学习手册之正则表达式和元字符
在上一篇文章中,我们介绍了 Python 的数据封装.类方法.静态方法和属性函数,现在我们介绍 Python 的正则表达式和元字符.查看上一篇文章请点击:https://www.cnblogs.com ...
- URL和报文知识总结 ——1
第一部分:浏览器生成的消息 关键词:URL的解析 HTTP请求的生成 DNS服务器 1.URL(网址)的构成: 对于一个网址的解析: https://i.cnblogs.com/index.htm ...
- Go语言中的流程控制
1 概述 Go语言提供了条件分支 if,状态分支 switch,循环 for,跳转 goto,延迟执行 defer,这些流程控制语句.分别作说明如下: 2 条件分支 if 依据条件是否满足确定执行哪个 ...
- Java设计模式(13)——结构型模式之桥梁模式(Bridge)
一.概述 概念 将抽象与实现脱耦,使得抽象和实现可以独立运行 UML图 角色: 角色关系 二.实践 按照上面的角色建立相应的类 抽象化角色 /** * 抽象化角色 * * @author Admini ...
- 北京Uber优步司机奖励政策(3月8日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- VINS(二)Feature Detection and Tracking
系统入口是feature_tracker_node.cpp文件中的main函数 1. 首先创建feature_tracker节点,从配置文件中读取信息(parameters.cpp),包括: ROS中 ...