读取目录中的所有图像并另存为(.mat 文件矩阵)到另一个目录中
reading all the images in a directory and saving as (.mat file matrixes) into another directory
我正在使用 kinect,刚开始使用 python。
我知道如何读取图像并将其保存为 python 中的矩阵。
但是我如何设法读取目录中的所有图像并在另一个目录中另存为矩阵文件(.mat 文件)?
你能举个简短的例子吗?
谢谢,
什么是矩阵文件?它是二进制的还是 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 )
使用 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)
我正在使用 kinect,刚开始使用 python。
我知道如何读取图像并将其保存为 python 中的矩阵。
但是我如何设法读取目录中的所有图像并在另一个目录中另存为矩阵文件(.mat 文件)?
你能举个简短的例子吗?
谢谢,
什么是矩阵文件?它是二进制的还是 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 )
使用 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)