使用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简单程序读取串口信息的方法
Mar 13 Python
研究Python的ORM框架中的SQLAlchemy库的映射关系
Apr 25 Python
Python文件操作,open读写文件,追加文本内容实例
Dec 14 Python
Python多线程扫描端口代码示例
Feb 09 Python
python解析含有重复key的json方法
Jan 22 Python
python sorted函数的小练习及解答
Sep 18 Python
Python笔记之代理模式
Nov 20 Python
Python实现随机取一个矩阵数组的某几行
Nov 26 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
Nov 27 Python
Python collections.defaultdict模块用法详解
Jun 18 Python
Python基于locals返回作用域字典
Oct 17 Python
python线程优先级队列知识点总结
Feb 28 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中数据库连接方式pdo和mysqli对比分析
2015/02/25 PHP
学习php设计模式 php实现策略模式(strategy)
2015/12/07 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
PHP无限极分类函数的实现方法详解
2017/04/15 PHP
PHP类的自动加载机制实现方法分析
2019/01/10 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
JavaScript 替换Html标签实现代码
2009/10/14 Javascript
location.search在客户端获取Url参数的方法
2010/06/08 Javascript
js与jquery中获取当前鼠标的x、y坐标位置的代码
2011/05/23 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
利用vue写todolist单页应用
2016/12/15 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
2020/07/27 Javascript
浅析VUE防抖与节流
2020/11/24 Vue.js
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
用Python解析XML的几种常见方法的介绍
2015/04/09 Python
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
python中利用Future对象异步返回结果示例代码
2017/09/07 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
Django模型修改及数据迁移实现解析
2019/08/01 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
Java Unsafe类实现原理及测试代码
2020/09/15 Python
python 使用OpenCV进行简单的人像分割与合成
2021/02/02 Python
HTML5实现页面切换激活的PageVisibility API使用初探
2016/05/13 HTML / CSS
纽约的奢华内衣店:Journelle
2016/07/29 全球购物
在校生自我鉴定
2014/01/23 职场文书
商业活动邀请函
2014/02/04 职场文书
路政管理毕业自荐书范文
2014/02/10 职场文书
婚纱店策划方案
2014/05/22 职场文书
无财产无子女离婚协议书范文
2014/09/14 职场文书
派出所班子党的群众路线对照检查材料思想汇报
2014/10/01 职场文书
承租经营合作者协议书
2014/10/01 职场文书
2015自愿离婚协议书范本
2015/01/28 职场文书
公司车辆管理制度
2015/08/04 职场文书