前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python中对文件夹下的特定格式图像全部读取并转化为数组保存(也可转化为txt文件)

Python中对文件夹下的特定格式图像全部读取并转化为数组保存(也可转化为txt文件)

作者头像
李智
发布2018-08-03 17:31:31
3.7K0
发布2018-08-03 17:31:31
举报
文章被收录于专栏:李智的专栏李智的专栏

python下对图像进行批处理少不了读取文件夹下的全部图像,下面就以具体实例分享下对文件夹下的特定格式图像全部读取并转化为数组保存的代码,代码详解请见注释 代码同时包含了矩阵和一维数组的相互转化


我的图像位于D:\test中,目录中为以下文件

里面的bmp文件为minist数据集的两张图片,大小为28*28

代码语言:javascript
复制
 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 可用字节
代码语言:javascript
复制
#-*- 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文件中

输出结果如下图所示

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年11月03日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档