Python中對文件夾下的特定格式圖像全部讀取並轉化爲數組保存(也可轉化爲txt文件)

python下對圖像進行批處理少不了讀取文件夾下的全部圖像,下面就以具體實例分享下對文件夾下的特定格式圖像全部讀取並轉化爲數組保存的代碼,代碼詳解請見註釋
代碼同時包含了矩陣和一維數組的相互轉化


我的圖像位於D:\test中,目錄中爲以下文件
這裏寫圖片描述
裏面的bmp文件爲minist數據集的兩張圖片,大小爲28*28

 D:\test 的目錄

2016/11/03  21:19             <DIR>          .
2016/11/03  21:19             <DIR>          ..
2016/11/03  21:22             1,596      num7.txt
2016/11/03  21:22             1,010      test.py
2016/07/02  20:16             1,862      TestImage_1.bmp
2016/07/02  20:16             1,862      TestImage_2.bmp
2016/07/02  20:16             1,862      TestImage_2222.jpg
               5 個文件          8,192 字節
               2 個目錄 444,028,071,936 可用字節
#-*- coding: utf-8 -*- 
import os
import numpy
from PIL import Image   #導入Image模塊
from pylab import *     #導入savetxt模塊


#以下代碼看可以讀取文件夾下所有文件
# def getAllImages(folder):
#     assert os.path.exists(folder)
#     assert os.path.isdir(folder)
#     imageList = os.listdir(folder)
#     imageList = [os.path.abspath(item) for item in imageList if os.path.isfile(os.path.join(folder, item))]
#     return imageList

# print getAllImages(r"D:\\test")



def get_imlist(path):   #此函數讀取特定文件夾下的bmp格式圖像

    return [os.path.join(path,f) for f in os.listdir(path) if f.endswith('.bmp')]

c=get_imlist(r"D:\test")    #r""是防止字符串轉譯
print c     #這裏以list形式輸出bmp格式的所有圖像(帶路徑)
d=len(c)    #這可以以輸出圖像個數


data=numpy.empty((d,28*28)) #建立d*(28*28)的矩陣
while d>0:
    img=Image.open(c[d-1])  #打開圖像
    #img_ndarray=numpy.asarray(img)
    img_ndarray=numpy.asarray(img,dtype='float64')/256  #將圖像轉化爲數組並將像素轉化到0-1之間
    data[d-1]=numpy.ndarray.flatten(img_ndarray)    #將圖像的矩陣形式轉化爲一維數組保存到data中
    d=d-1
print data

A=numpy.array(data[0]).reshape(28,28)   #將一維數組轉化爲矩28*28矩陣
#print A
savetxt('num7.txt',A,fmt="%.0f") #將矩陣保存到txt文件中

輸出結果如下圖所示
這裏寫圖片描述
這裏寫圖片描述

發佈了37 篇原創文章 · 獲贊 84 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章