使用npy转image图像并保存的实例


Posted in Python onJuly 01, 2020

1. 用于分类模型:

import numpy as np
import scipy.misc
import cv2
import os
 
# DF1
path = "/home/pi/工作/predict1/"
npy_list = os.listdir(path)
save_path = "/home/pi/predict1_img/"
if not os.path.exists(save_path):
 os.mkdir(save_path)
 
for i in range(0, len(npy_list)):
 print(i)
 print(npy_list[i])
 npy_full_path = os.path.join(path, npy_list[i])
 img = np.load(npy_full_path) # load进来
 
 save_full_path = os.path.join(save_path, npy_list[i][:-4])
 scipy.misc.imsave(save_full_path, img) # 保存

2. 用于分割模型

"""
将数据集随机分成训练集、测试集
传入参数:
ratio = 0.7 # 训练样本比例
path = "/home/pi/20190701_0705" # 数据路径
new_path = "/home/pi/20190701_0705_new2" # 保存路径
使用方法:
temp = Generate_Train_and_Test(path, new_path, ratio)
temp.splict_data()
"""
import random
import os
import cv2
 
def makeDir(path):
 try:
  if not os.path.exists(path):
   if not os.path.isfile(path):
    # os.mkdir(path)
    os.makedirs(path)
    return 0
  else:
   return 1
 except Exception as e:
  print(str(e))
  return -2
 
class Generate_Train_and_Test:
 
 def __init__(self, path, new_path, ratio):
  if not os.path.exists(new_path):
   makeDir(new_path)
  self.path = path
  self.new_path = new_path
  self.ratio = ratio
  self.train_sample_path = os.path.join(new_path, "train")
  self.test_sample_path = os.path.join(new_path, "test")
 
  makeDir(self.train_sample_path)
  makeDir(self.test_sample_path)
 
 def splict_data(self):
  class_names = os.listdir(self.path) # 类别:bg and ng10
  for name in class_names:
   print("process class name=%s" % name)
   tmp_class_name = os.path.join(self.path, name)
   save_train_class_name = os.path.join(self.train_sample_path, name)
   save_test_class_name = os.path.join(self.test_sample_path, name)
   makeDir(save_train_class_name)
   makeDir(save_test_class_name)
   if os.path.isdir(tmp_class_name):
    image_names = os.listdir(tmp_class_name) # 其中一个类别的所有图像
    image_names = [f for f in image_names if not f.endswith('_mask.png')]
    total = len(image_names)
 
    # 1, 打乱当前类中所有图像
    random.shuffle(image_names)
 
    # 2, 从当前类(ng)中,取前面的图像作为train data
    train_temp = int(self.ratio * total) # 打乱后,取前面作为train_data
    for i in range(0, train_temp):
     print(i, image_names[i])
     temp_img_name = os.path.join(tmp_class_name, image_names[i])
     train_image = cv2.imread(temp_img_name)
     temp_label_name = os.path.join(tmp_class_name, image_names[i][:-4] + '_mask.png')
     train_label = cv2.imread(temp_label_name)
 
     save_train_img_name = os.path.join(save_train_class_name, image_names[i])
     cv2.imwrite(save_train_img_name, train_image)
 
     save_train_label_name = os.path.join(save_train_class_name, image_names[i][:-4] + '_mask.png')
     cv2.imwrite(save_train_label_name, train_label)
 
    # 3, 从当前类(bg)中,取后面的图像作为test data
    for i in range(train_temp, total):
     print(i, image_names[i])
     test_img_name = os.path.join(tmp_class_name, image_names[i])
     test_image = cv2.imread(test_img_name)
     test_label_name = os.path.join(tmp_class_name, image_names[i][:-4] + '_mask.png')
     test_label = cv2.imread(test_label_name)
 
     save_test_img_name = os.path.join(save_test_class_name, image_names[i])
     cv2.imwrite(save_test_img_name, test_image)
 
     save_test_label_name = os.path.join(save_test_class_name, image_names[i][:-4] + '_mask.png')
     cv2.imwrite(save_test_label_name, test_label)
 
ratio = 0.7 # 训练样本比例
path = "/home/pi/工作/20190712_splict" # 数据路径
new_path = "/home/pi/工作/20190712_splict_new3" # 保存路径
 
temp = Generate_Train_and_Test(path, new_path, ratio)
temp.splict_data()

补充知识:python把由图片组成的文件夹转换为.npy文件

由于深度神经网络的需要,我要将一个里面全是.png格式的图片的文件夹转换为一个.npy文件,即将一个图片文件夹转换成一个.npy文件。

具体思路为:

若已知文件夹中图片数量,可生成一个三维数组,第一维表示图片数量,后两维表示一张图片的尺寸;

利用np.save()函数将生成的三维数组保存成一个.npy文件

import numpy as np
import imageio
import os
os.chdir('E:/RegistrationCode/papercode/datasets/mri_2d_test')  #切换python工作路径到你要操作的图片文件夹,mri_2d_test为我的图片文件夹
a=np.ones((190,192,160)) #利用np.ones()函数生成一个三维数组,当然也可用np.zeros,此数组的每个元素a[i]保存一张图片
i=0
for filename in os.listdir(r"E:/RegistrationCode/papercode/datasets/mri_2d_test"): #使用os.listdir()获取该文件夹下每一张图片的名字
 im=imageio.imread(filename)
 a[i]=im
 i=i+1
 if(i==190): #190为文件夹中的图片数量
 break
np.save('你要保存的.npy文件所在路径及名字',a)

以上这篇使用npy转image图像并保存的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python sys.argv用法实例
May 28 Python
python 第三方库的安装及pip的使用详解
May 11 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
Jul 13 Python
Python 的类、继承和多态详解
Jul 16 Python
Django 实现下载文件功能的示例
Mar 06 Python
python 利用pandas将arff文件转csv文件的方法
Feb 12 Python
对Python强大的可变参数传递机制详解
Jun 13 Python
Python创建或生成列表的操作方法
Jun 19 Python
Django使用Profile扩展User模块方式
May 14 Python
导致python中import错误的原因是什么
Jul 01 Python
彻底搞懂python 迭代器和生成器
Sep 07 Python
Django数据库迁移常见使用方法
Nov 12 Python
python实现npy格式文件转换为txt文件操作
Jul 01 #Python
python与pycharm有何区别
Jul 01 #Python
tensorflow 动态获取 BatchSzie 的大小实例
Jun 30 #Python
浅谈TensorFlow之稀疏张量表示
Jun 30 #Python
tensorflow图像裁剪进行数据增强操作
Jun 30 #Python
浅谈tensorflow 中的图片读取和裁剪方式
Jun 30 #Python
Python openpyxl模块实现excel读写操作
Jun 30 #Python
You might like
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
2013/06/20 PHP
JavaScript高级程序设计
2006/12/29 Javascript
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
javascript模块化是什么及其优缺点介绍
2013/09/02 Javascript
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
Nodejs sublime text 3安装与配置
2014/06/19 NodeJs
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
2014/12/19 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
JSON与JS对象的区别与对比
2017/03/01 Javascript
详解HTTPS 的原理和 NodeJS 的实现
2017/07/04 NodeJs
详解Vue微信公众号开发踩坑全记录
2017/08/21 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
为Python的Tornado框架配置使用Jinja2模板引擎的方法
2016/06/30 Python
用Python实现KNN分类算法
2017/12/22 Python
python爬虫使用cookie登录详解
2017/12/27 Python
Python找出微信上删除你好友的人脚本写法
2018/11/01 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
python Pandas库基础分析之时间序列的处理详解
2019/07/13 Python
快速解决docker-py api版本不兼容的问题
2019/08/30 Python
详解Python 中sys.stdin.readline()的用法
2019/09/12 Python
python matplotlib饼状图参数及用法解析
2019/11/04 Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
2020/03/10 Python
Python实现像awk一样分割字符串
2020/09/15 Python
露营世界:Camping World
2017/02/02 全球购物
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
区域总监的岗位职责
2013/11/21 职场文书
运动会方阵解说词
2014/02/12 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
小学生三分钟演讲稿
2014/08/18 职场文书
2015年幼儿园卫生保健工作总结
2015/05/12 职场文书
教你使用vscode 搭建react-native开发环境
2021/07/07 Javascript
Python中三种花式打印的示例详解
2022/03/19 Python