使用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连接oracle数据库实例
Oct 17 Python
python黑魔法之参数传递
Feb 12 Python
Python自动化运维_文件内容差异对比分析
Dec 13 Python
Python聊天室程序(基础版)
Apr 01 Python
Python实现中一次读取多个值的方法
Apr 22 Python
python实现剪切功能
Jan 23 Python
Python实现的爬取百度贴吧图片功能完整示例
May 10 Python
python实现统计代码行数的小工具
Sep 19 Python
Python结合Window计划任务监测邮件的示例代码
Aug 05 Python
Python 如何实现文件自动去重
Jun 02 Python
如何使用python包中的sched事件调度器
Apr 30 Python
Python+SeaTable实现计算两个日期间的工作日天数
Jul 07 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 md5下16位和32位的实现代码
2008/04/09 PHP
如何在PHP程序中防止盗链
2008/04/09 PHP
php目录操作函数之获取目录与文件的类型
2010/12/29 PHP
PHP设计模式之责任链模式的深入解析
2013/06/13 PHP
php实现利用phpexcel导出数据
2013/08/24 PHP
php socket客户端及服务器端应用实例
2014/07/04 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
php实现的日历程序
2015/06/18 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
jQuery新闻滚动插件 jquery.roller.js
2011/06/27 Javascript
javascript面向对象编程代码
2011/12/19 Javascript
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
2014/02/21 Javascript
JavaScript中的this关键字使用方法总结
2015/03/13 Javascript
AngularJS ng-app 指令实例详解
2016/07/30 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
2016/10/27 Javascript
react实现pure render时bind(this)隐患需注意!
2017/03/09 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
2017/07/13 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
python复制与引用用法分析
2015/04/08 Python
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
python动态进度条的实现代码
2019/07/03 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
Expected conditions模块使用方法汇总代码解析
2020/08/13 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
Boden英国官网:英国知名原创时装品牌
2018/11/06 全球购物
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
2014/01/07 面试题
能否解释一下XSS cookie盗窃是什么意思
2012/06/02 面试题
农村婚礼主持词
2014/03/13 职场文书
航海技术专业毕业生求职信
2014/04/06 职场文书
计算机教师工作总结
2015/08/13 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
创业计划书之酒吧
2019/12/02 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python