使用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使用爬虫猜密码
Feb 19 Python
Python中set与frozenset方法和区别详解
May 23 Python
Python应用03 使用PyQT制作视频播放器实例
Dec 07 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
Apr 17 Python
基于python 处理中文路径的终极解决方法
Apr 12 Python
Python常用的json标准库
Feb 19 Python
Python3.4学习笔记之列表、数组操作示例
Mar 01 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
Aug 29 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
Dec 09 Python
Python request使用方法及问题总结
Apr 26 Python
Python Tornado核心及相关原理详解
Jun 24 Python
Python实现七个基本算法的实例代码
Oct 08 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生成带有雪花背景的验证码
2008/09/28 PHP
PHP处理大量表单字段的便捷方法
2015/02/07 PHP
php实现socket推送技术的示例
2017/12/20 PHP
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
深入解析contentWindow, contentDocument
2013/07/04 Javascript
JSON无限折叠菜单编写实例
2013/12/16 Javascript
JavaScript实现班级随机点名小应用需求的具体分析
2014/05/12 Javascript
JS 打印功能代码可实现打印预览、打印设置等
2014/10/31 Javascript
详解Bootstrap的aria-label和aria-labelledby应用
2016/01/04 Javascript
JavaScript获取css行间样式,内连样式和外链样式的简单方法
2016/07/18 Javascript
xmlplus组件设计系列之分隔框(DividedBox)(8)
2017/05/02 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
2018/02/21 Javascript
vue动态注册组件实例代码详解
2019/05/30 Javascript
部署vue+Springboot前后端分离项目的步骤实现
2020/05/31 Javascript
[03:57]《不朽》——2015DOTA2国际邀请赛—中国军团出征主题曲MV
2015/07/15 DOTA
c++生成dll使用python调用dll的方法
2014/01/20 Python
Python生成器(Generator)详解
2015/04/13 Python
Python中的自省(反射)详解
2015/06/02 Python
常见的python正则用法实例讲解
2016/06/21 Python
Python生成数字图片代码分享
2017/10/31 Python
python利用pandas将excel文件转换为txt文件的方法
2018/10/23 Python
Python数据可视化库seaborn的使用总结
2019/01/15 Python
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
Django REST Swagger实现指定api参数
2020/07/07 Python
python 8种必备的gui库
2020/08/27 Python
python selenium 获取接口数据的实现
2020/12/07 Python
python 三种方法提取pdf中的图片
2021/02/07 Python
美国高街时尚品牌:OASAP
2016/07/24 全球购物
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
德国孕妇装和婴童服装网上商店:bellybutton
2018/04/12 全球购物
ECOSUSI官网:女式皮革背包
2019/09/27 全球购物
Shell如何接收变量输入
2012/09/24 面试题
电气个人求职信范文
2014/02/04 职场文书
西式婚礼主持词
2014/03/13 职场文书
中药学专业求职信
2014/05/31 职场文书
服装设计专业求职信
2014/06/16 职场文书