使用npy轉(zhuǎn)image圖像并保存的實(shí)例
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進(jìn)來 save_full_path = os.path.join(save_path, npy_list[i][:-4]) scipy.misc.imsave(save_full_path, img) # 保存
2. 用于分割模型
""" 將數(shù)據(jù)集隨機(jī)分成訓(xùn)練集、測試集 傳入?yún)?shù): ratio = 0.7 # 訓(xùn)練樣本比例 path = "/home/pi/20190701_0705" # 數(shù)據(jù)路徑 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, 打亂當(dāng)前類中所有圖像 random.shuffle(image_names) # 2, 從當(dāng)前類(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, 從當(dāng)前類(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 # 訓(xùn)練樣本比例 path = "/home/pi/工作/20190712_splict" # 數(shù)據(jù)路徑 new_path = "/home/pi/工作/20190712_splict_new3" # 保存路徑 temp = Generate_Train_and_Test(path, new_path, ratio) temp.splict_data()
補(bǔ)充知識:python把由圖片組成的文件夾轉(zhuǎn)換為.npy文件
由于深度神經(jīng)網(wǎng)絡(luò)的需要,我要將一個里面全是.png格式的圖片的文件夾轉(zhuǎn)換為一個.npy文件,即將一個圖片文件夾轉(zhuǎn)換成一個.npy文件。
具體思路為:
若已知文件夾中圖片數(shù)量,可生成一個三維數(shù)組,第一維表示圖片數(shù)量,后兩維表示一張圖片的尺寸;
利用np.save()函數(shù)將生成的三維數(shù)組保存成一個.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()函數(shù)生成一個三維數(shù)組,當(dāng)然也可用np.zeros,此數(shù)組的每個元素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為文件夾中的圖片數(shù)量 break np.save('你要保存的.npy文件所在路徑及名字',a)
以上這篇使用npy轉(zhuǎn)image圖像并保存的實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python詞云庫wordcloud的使用方法與實(shí)例詳解
這篇文章主要介紹了python詞云庫wordcloud的使用方法與實(shí)例詳解,需要的朋友可以參考下2020-02-02Python中你應(yīng)該知道的一些內(nèi)置函數(shù)
python提供了內(nèi)聯(lián)模塊buidin,該模塊定義了一些軟件開發(fā)中常用的函數(shù),這些函數(shù)實(shí)現(xiàn)了數(shù)據(jù)類型的轉(zhuǎn)換,數(shù)據(jù)的計(jì)算,序列的處理等功能。下面這篇文章主要給大家介紹了Python中一些大家應(yīng)該知道的內(nèi)置函數(shù),文中總結(jié)的非常詳細(xì),需要的朋友們下面來一起看看吧。2017-03-03python實(shí)現(xiàn)微信發(fā)送郵件關(guān)閉電腦功能
這篇文章主要介紹了python實(shí)現(xiàn)微信發(fā)送郵件關(guān)閉電腦功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02