使用npy转image图像并保存的实例

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图像并保存的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • python使用PyGame绘制图像并保存为图片文件的方法

    本文实例讲述了python使用PyGame绘制图像并保存为图片文件的方法.分享给大家供大家参考.具体实现方法如下: ''' pg_draw_circle_save101.py draw a blue solid circle on a white background save the drawing to an image file for result see http://prntscr.com/156wxi tested with Python 2.7 and PyGame 1.9.2

  • 用python处理图片之打开\显示\保存图像的方法

    一提到数字图像处理,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因此,我们这里使用python这个脚本语言来进行数字图像处理. 要使用python,必须先安装python,一般是2.7版本以上,不管是在windows系统,还是linux系统,安装都是非常简单的. 要使用python进行各种开发,就必须安装对应的库.这和matlab非常相似,只是matlab里面叫工具箱

  • python 实现将Numpy数组保存为图像

    第一种方案 可以使用scipy.misc,代码如下: import scipy.misc misc.imsave('out.jpg', image_array) 上面的scipy版本会标准化所有图像,以便min(数据)变成黑色,max(数据)变成白色.如果数据应该是精确的灰度级或准确的RGB通道,则解决方案为: import scipy.misc misc.toimage(image_array, cmin=0.0, cmax=...).save('outfile.jpg') 第二种方案 使用P

  • Python3实现转换Image图片格式

    前言 首先图片格式转换的方法有很多,但是转二进制字节流的,我搜了一下午终于在 stackoverflow上搜到了 说一下为什么要在线转这个图片格式 额,一名Python3 spider, 需求要爬去文章,并且把里面的图片,上传到本公司的七牛云上面, 意思就是,图片不需要下载到本地,爬取到图片url后,读取图片二进制数据,然后上传到自己公司七牛云上面,并且替换其格式(这一点很坑) 上传图片二进制数据到七牛云上面不难, 照着七牛云API文档基本就能行,有一点很坑,七牛云官方文档Python API

  • 使用npy转image图像并保存的实例

    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 r

  • C# Console利用mspaint打开图像并保存的方法

    本文实例讲述了C# Console利用mspaint打开图像并保存的方法.分享给大家供大家参考,具体如下: 调用画图板压缩图片 System.Diagnostics.Process process = new System.Diagnostics.Process(); process = System.Diagnostics.Process.Start("mspaint.exe", path); int processId = process.Id; AutomationElement

  • python 利用for循环 保存多个图像或者文件的实例

    在实际应用中,会遇到保存多个文件或者图像的操作,利用for循环可以实现基本要求: for i in range(50): plt.savefig("%d.jpg"%(i+1)) 就解决了,出去50组图片. 和print格式化输出有异曲同工之妙: print ("she is %d years old"%(18)) 以上这篇python 利用for循环 保存多个图像或者文件的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • python-opencv实现视频指定帧数间隔图像的保存功能

    使用opencv-python,把一段视频中指定帧频间隔的图像保存到新建的文件中 首先安装好python ,配置好opencv-python # 导入所有必要的库 import cv2 import os # 从指定的路径读取视频 cam = cv2.VideoCapture("F:/video1.mp4") try: # 创建名为data的文件夹 if not os.path.exists('data'): os.makedirs('data') # 如果未创建,则引发错误 exce

  • python 截取XML中bndbox的坐标中的图像,另存为jpg的实例

    文件目录 Annotations中是XML文件. JPEGImages中是对应的JPG文件 XML文件 要截取bndbox坐标中的内容. python代码 # -*- coding: utf-8 -*- # @Time : 2020/2/8 22:14 # @Author : SanZhi # @File : get_xml.py # @Software: PyCharm import cv2 import numpy as np import xml.dom.minidom import os

  • iOS 沙盒图片保存读取实例

    实例如下所示: //保存图片 -(void)saveImageDocuments:(UIImage *)image{ //拿到图片 UIImage *imagesave = image; NSString *path_sandox = NSHomeDirectory(); //设置一个图片的存储路径 NSString *imagePath = [path_sandox stringByAppendingString:@"/Documents/test.png"]; //把图片直接保存到

  • python 执行shell命令并将结果保存的实例

    方法1: 将shell执行的结果保存到字符串 def run_cmd(cmd): result_str='' process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) result_f = process.stdout error_f = process.stderr errors = error_f.read() if errors: pass result_str =

  • Python图像处理之识别图像中的文字(实例讲解)

    ①安装PIL:pip install Pillow(之前的博客中有写过) ②安装pytesser3:pip install pytesser3 ③安装pytesseract:pip install pytesseract ④安装autopy3: 先安装wheel:pip install wheel 下载autopy3-0.51.1-cp36-cp36m-win_amd64.whl[点击打开链接] 执行命令:pip install E:\360安全浏览器下载\autopy3-0.51.1-cp36

  • django多文件上传,form提交,多对多外键保存的实例

    需求: 需要实现一个用户反馈的接口,用户通过接口提交: 1.一段文字 2. 一个log文件 3. 多个图片 找了很多ModelForm,DRF-Serializer的资料,都没找到简单好用的,干脆就直接写,啥也不用. Model.py class UserFeedback(models.Model): user = models.ForeignKey(User, verbose_name="用户") desc = models.TextField(default=""

随机推荐