使用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 相关文章推荐
PyQt5每天必学之进度条效果
Apr 19 Python
python保存网页图片到本地的方法
Jul 24 Python
解决tensorflow模型参数保存和加载的问题
Jul 26 Python
python中如何使用分步式进程计算详解
Mar 22 Python
浅谈Python爬虫基本套路
Mar 25 Python
元组列表字典(莫烦python基础)
Apr 03 Python
python使用threading.Condition交替打印两个字符
May 07 Python
python使用sklearn实现决策树的方法示例
Sep 12 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
Apr 20 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
Jun 03 Python
Python判断变量是否是None写法代码实例
Oct 09 Python
python产生模拟数据faker库的使用详解
Nov 04 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
轻松修复Discuz!数据库
2008/05/03 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
非阻塞动态加载javascript广告实现代码
2010/11/17 Javascript
Javacript实现颜色梯度变化和渐变的效果代码
2013/05/31 Javascript
javascript实现json页面分页实例代码
2014/02/20 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
2016/06/10 Javascript
微信小程序模版渲染详解
2018/01/26 Javascript
layui 设置table 行的高度方法
2018/08/17 Javascript
JavaScript作用域、闭包、对象与原型链概念及用法实例总结
2018/08/20 Javascript
详解vue引入子组件方法
2019/02/12 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
javascript删除数组元素的七个方法示例
2019/09/09 Javascript
python不换行之end=与逗号的意思及用途
2017/11/21 Python
Python深度优先算法生成迷宫
2018/01/22 Python
浅谈pytorch和Numpy的区别以及相互转换方法
2018/07/26 Python
对python多线程中Lock()与RLock()锁详解
2019/01/11 Python
python hashlib加密实现代码
2019/10/17 Python
Python 实现递归法解决迷宫问题的示例代码
2020/01/12 Python
matplotlib 画双轴子图无法显示x轴的解决方法
2020/07/27 Python
python 利用jieba.analyse进行 关键词提取
2020/12/17 Python
HTML5 canvas基本绘图之文字渲染
2016/06/27 HTML / CSS
吃透移动端 Html5 响应式布局
2019/12/16 HTML / CSS
教师研修随笔感言
2014/01/23 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
辞职信格式模板
2015/02/27 职场文书
校长个人总结
2015/03/03 职场文书
党员转正意见怎么写
2015/06/03 职场文书
导游词幽默开场白
2019/06/26 职场文书
一行代码python实现文件共享服务器
2021/04/22 Python
.Net Core导入千万级数据至Mysql的步骤
2021/05/24 MySQL
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers
python垃圾回收机制原理分析
2022/04/13 Python
Java 多线程并发FutureTask
2022/06/28 Java/Android