我正在使用 kinect,并且刚开始使用 python。
我知道如何在 python 中读取图像并保存为矩阵。
但是我怎样才能读取一个目录中的所有图像并保存为另一个目录中的矩阵文件(.mat 文件)?
你能举一个简短的例子吗?
谢谢,
我正在使用 kinect,并且刚开始使用 python。
我知道如何在 python 中读取图像并保存为矩阵。
但是我怎样才能读取一个目录中的所有图像并保存为另一个目录中的矩阵文件(.mat 文件)?
你能举一个简短的例子吗?
谢谢,
使用 scikit-image,您可以利用 ImageCollection 对象:
from skimage import io
images = io.imread_collection('/path/to/images/*.jpg')
for (image, fn) in zip(images, images.files):
np.savetxt(fn + '.txt', image)
什么是矩阵文件?它是二进制还是 ascii ?我假设你有一个保存和加载的功能。调用这个函数img2mat
,并假设它接受一个输入 img 文件名和一个输出矩阵文件名。下面我使用的是os
模块,它是一个与操作系统交互的工具。我会做类似的事情
import os
import scipy.io as sio
import scipy
def img2mat( infile , outfile, matlab_name):
arr = scipy.misc.imread(infile) # should already be loaded as a np.array
sio.savemat(outfile, { matlab_name: arr})
dirpath = '/path/to/images'
img_ext = '.jpg' #for example
img_fnames = [ os.path.join(dirpath,x) for x in os.listdir( dirpath ) if x.endswith(img_ext) ]
outpath = '/path/to/outputfolder'
mat_fnames = [ os.path.splitext(os.path.basename(x))[0] +'.mat' for x in img_fnames ]
mat_fnames = [ os.path.join( outpath, x ) for x in mat_fnames ]
for i,(in,out) in enumerate( zip( img_fnames, mat_fnames) ):
img2mat( in,out, 'img%d'%i)
假设您没有太多图像,我会将多个图像保存到同一个文件中。
img_dict = { 'img%d'%i: scipy.misc.imread(fname) for i,fname in enumerate( img_fnames) }
sio.savemat( 'allimg.mat', img_dict )