将图片转化为矩阵并存储在文本中

将图片转化为矩阵并存储在文本中

1.   \11\zheng_chang文件夹下的图片(256*256)如下图所示:

2.   将zheng_chang文件夹下所有的图片转化为矩阵,详细代码如下:

import os
import numpy as np
from PIL import Image
from pylab import *

#此函数读取特定文件夹下的jpg格式图像地址信息,存储在列表中
def get_imlist(path):
    return [os.path.join(path,f) for f in os.listdir(path) if f.endswith('.jpg')]

# r""是防止字符串转译
# c=['zheng_chang\\1.jpg', 'zheng_chang\\2.jpg', 'zheng_chang\\3.jpg']  以list形式输出jpg格式的所有图像(带路径)

c=get_imlist(r"zheng_chang")
d=len(c)    # 图像个数
data=np.empty((1,256*256*3)) # 建立d*(1,256*256*3)的随机矩阵

# 遍历每张图片
for i in range(d):
    img = Image.open(c[i])  # 打开图像
    img_ndarray = np.asarray(img, dtype='float64') / 256  # 将图像转化为数组并将像素转化到0-1之间
    data = np.ndarray.flatten(img_ndarray)  # 将图像的矩阵形式转化为一维数组保存到data中
    A=np.array(data).reshape(256,256*3)   # 将一维数组转化为矩阵
    savetxt('0_%d.txt'%i,A,fmt="%.2f",delimiter=',') # 进行存储保存为两位小数,数据以","为间隔

#savetxt('0_%d.txt',A,fmt="%.0f") #将矩阵保存到txt文件中转化为二进制0 1 存储

3.  图片转化后生成的TXT文件如下图所示:


4.  读取TXT文件将(256,256*3)矩阵转化为(1,196608),程序如下所示:

def txtMat2vector(filename):
    data = np.loadtxt(filename, delimiter=',')
    z = data.reshape(1, 196608)
    return z
print(img2vector('0_0.txt'))

猜你喜欢

转载自blog.csdn.net/weixin_39781462/article/details/80777905