使用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之画圈还不简单吗?
Sep 20 Python
Python多线程编程(六):可重入锁RLock
Apr 05 Python
使用Python生成url短链接的方法
May 04 Python
利用Python实现网络测试的脚本分享
May 26 Python
Sanic框架配置操作分析
Jul 17 Python
Python实现的tcp端口检测操作示例
Jul 24 Python
Python线程同步的实现代码
Oct 03 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
Jun 08 Python
如何关掉pycharm中的python console(图解)
Oct 31 Python
Python求凸包及多边形面积教程
Apr 12 Python
PyInstaller的安装和使用的详细步骤
Jun 02 Python
Keras 数据增强ImageDataGenerator多输入多输出实例
Jul 03 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中用数组的方法设置cookies
2011/04/21 PHP
PHP远程采集图片详细教程
2014/07/01 PHP
php基于表单密码验证与HTTP验证用法实例
2015/01/06 PHP
php截取html字符串及自动补全html标签的方法
2015/01/15 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
php中时间函数date及常用的时间计算
2017/05/12 PHP
php学习笔记之字符串常见操作总结
2019/07/16 PHP
文本框获得焦点和失去焦点的判断代码
2012/03/18 Javascript
JavaScript实现复制功能各浏览器支持情况实测
2013/07/18 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
浅析JS获取url中的参数实例代码
2016/06/14 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
JS正则表达式验证密码格式的集中情况总结
2017/02/23 Javascript
详谈Node.js之操作文件系统
2017/08/29 Javascript
node文字生成图片的示例代码
2017/10/26 Javascript
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
axios全局注册,设置token,以及全局设置url请求网段的方法
2018/09/25 Javascript
详解element-ui设置下拉选择切换必填和非必填
2019/06/17 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
Python 自动安装 Rising 杀毒软件
2009/04/24 Python
Python的内存泄漏及gc模块的使用分析
2014/07/16 Python
python中快速进行多个字符替换的方法小结
2016/12/15 Python
python决策树之CART分类回归树详解
2017/12/20 Python
python 类的继承 实例方法.静态方法.类方法的代码解析
2019/08/23 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
python pip如何手动安装二进制包
2020/09/30 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
2020/11/28 Python
深入研究HTML5实现图片压缩上传功能
2016/03/25 HTML / CSS
html5服务器推送_动力节点Java学院整理
2017/07/12 HTML / CSS
怎样在程序里获得一个空指针
2015/01/24 面试题
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
《鱼游到了纸上》教学反思
2014/02/20 职场文书
社区居务公开实施方案
2014/03/27 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
早上好问候语大全
2015/11/10 职场文书