使用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中几个常用的类方法
Apr 08 Python
Python中使用PyQt把网页转换成PDF操作代码实例
Apr 23 Python
一文带你了解Python中的字符串是什么
Nov 20 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
Dec 29 Python
详解python中的生成器、迭代器、闭包、装饰器
Aug 22 Python
基于Python实现大文件分割和命名脚本过程解析
Sep 29 Python
python基于celery实现异步任务周期任务定时任务
Dec 30 Python
python调用私有属性的方法总结
Jul 24 Python
sqlalchemy实现时间列自动更新教程
Sep 02 Python
Pycharm中如何关掉python console
Oct 27 Python
python爬虫爬取图片的简单代码
Jan 18 Python
浅谈Python中对象是如何被调用的
Apr 06 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生成不重复标识符的方法
2014/11/21 PHP
php中的常用魔术方法汇总
2016/02/14 PHP
javascript 进度条 实现代码
2009/07/30 Javascript
jquery $.ajax各个事件执行顺序
2010/10/15 Javascript
Javascript级联下拉菜单以及AJAX数据验证核心代码
2013/05/10 Javascript
js中Image对象以及对其预加载处理示例
2013/11/20 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
JavaScript设计模式之单例模式实例
2014/09/24 Javascript
jQuery实现点击水纹波动动画
2016/04/10 Javascript
JavaScript实现经典排序算法之选择排序
2016/12/28 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
layer 刷新某个页面的实现方法
2019/09/05 Javascript
在JavaScript中实现链式调用的实现
2019/12/24 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
vue之封装多个组件调用同一接口的案例
2020/08/11 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
[55:54]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python enumerate函数的使用方法总结
2017/11/15 Python
python机器人行走步数问题的解决
2018/01/29 Python
Python实现带下标索引的遍历操作示例
2019/05/30 Python
python粘包问题及socket套接字编程详解
2019/06/29 Python
Python timeit模块的使用实践
2020/01/13 Python
详解Python的三种拷贝方式
2020/02/11 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
CSS3打造磨砂玻璃背景效果
2016/09/28 HTML / CSS
日本网路线上商品代购服务:转送JAPAN
2016/08/05 全球购物
Probikekit日本:自行车套件,跑步和铁人三项装备
2017/04/03 全球购物
寻找完美的房车租赁:RVShare
2019/02/23 全球购物
简述安装Slackware Linux系统的过程
2012/05/08 面试题
请问软件开发中的设计模式你会使用哪些
2015/05/13 面试题
《黄山奇石》教学反思
2014/04/19 职场文书
家长会开场白和结束语
2015/05/29 职场文书
大学军训通讯稿
2015/07/18 职场文书
初中班主任工作随笔
2015/08/15 职场文书
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android