使用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支持断点续传的多线程下载示例
Jan 16 Python
Python中使用logging模块代替print(logging简明指南)
Jul 09 Python
Python实现遍历windows所有窗口并输出窗口标题的方法
Mar 13 Python
python实现简单的计时器功能函数
Mar 14 Python
Numpy数据类型转换astype,dtype的方法
Jun 09 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
Jul 07 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
Aug 13 Python
使用python批量修改文件名的方法(视频合并时)
Mar 24 Python
Python matplotlib画曲线例题解析
Feb 07 Python
python利用 keyboard 库记录键盘事件
Oct 16 Python
python3判断IP地址的方法
Mar 04 Python
Python中Matplotlib的点、线形状、颜色以及绘制散点图
Apr 07 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
php array的学习笔记
2012/05/10 PHP
PHP测试成功的邮件发送案例
2015/10/26 PHP
Yii2.0中的COOKIE和SESSION用法
2016/08/12 PHP
javascript静态的url如何传递
2007/05/03 Javascript
return false;和e.preventDefault();的区别
2010/07/11 Javascript
Jquery选中或取消radio示例
2013/09/29 Javascript
laytpl 精致巧妙的JavaScript模板引擎
2014/08/29 Javascript
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
Webpack中publicPath路径问题详解
2018/05/03 Javascript
JavaScript防止全局变量污染的方法总结
2018/08/02 Javascript
详解ES6 Promise对象then方法链式调用
2018/10/20 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
2018/12/05 Javascript
react中使用css的7中方式(最全总结)
2019/02/11 Javascript
详解VUE前端按钮权限控制
2019/04/26 Javascript
详解vue 动态加载并注册组件且通过 render动态创建该组件
2019/05/30 Javascript
vue-router为激活的路由设置样式操作
2020/07/18 Javascript
[48:24]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第一场 12.09
2020/12/12 DOTA
python安装numpy&安装matplotlib& scipy的教程
2017/11/02 Python
python如何实现内容写在图片上
2018/03/23 Python
Python3.遍历某文件夹提取特定文件名的实例
2018/04/26 Python
python多进程间通信代码实例
2019/09/30 Python
jupyter notebook快速入门及使用详解
2020/11/13 Python
在python中对于bool布尔值的取反操作
2020/12/11 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
生产车间标语
2014/06/11 职场文书
中学生社会实践活动总结
2014/07/03 职场文书
三好学生先进事迹材料
2014/08/28 职场文书
爱的奉献演讲稿
2014/09/10 职场文书
加强作风建设演讲稿
2014/10/24 职场文书
小学生作文批改评语
2014/12/25 职场文书
女儿满月酒致辞
2015/07/29 职场文书
企业文化学习心得体会
2016/01/21 职场文书
2019大学生实习报告
2019/06/21 职场文书
简单且有用的Python数据分析和机器学习代码
2021/07/02 Python