【问题标题】:reading all the images in a directory and saving as (.mat file matrixes) into another directory读取目录中的所有图像并保存为(.mat 文件矩阵)到另一个目录中
【发布时间】:2015-10-05 02:46:16
【问题描述】:

我正在使用 kinect,刚开始使用 python。

我知道如何在 python 中读取图像并保存为矩阵。

但是我怎样才能读取一个目录中的所有图像并保存为另一个目录中的矩阵文件(.mat 文件)?

你能举个简短的例子吗?

谢谢,

【问题讨论】:

    标签: python matrix scikit-learn scikit-image imread


    【解决方案1】:

    什么是矩阵文件?它是二进制还是 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 )
    

    【讨论】:

    • 谢谢 Dermen,我现在就试试,让你知道。
    • 其实,如果要将一个图像文件保存为1个矩阵,代码是这样的: arr = imread('/path/to/image') arr = np.array(arr) sio.savemat('R.mat', {R : arr}) 对不起,我是 python 新手,那么在这种情况下我们该如何实现呢?
    • 那么你会在matlab中使用这个文件吗?在这种情况下,加载 R.mat 文件后,您将获得 R 对象(在 matlab 中),即图像?
    • 我添加了一点代码。您为什么要每个 img 一个文件的任何原因?看来您可以将imgs保存在同一个文件中
    • 听起来不错,顺便说一句,不确定谁对你投了反对票,但我建议你详细说明matrix.mat 文件的含义。在 python 中有一个matrix 对象,它类似于np.array。看来您实际上是将图像保存为np.arrays
    【解决方案2】:

    使用 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)
    

    【讨论】:

    • 但是为什么它不起作用?它不会给出语法错误,但它也不起作用。
    • len(images) 的结果是什么?
    • 其实是导入的问题。但我仍然没有时间尝试你的方法。
    • 导入问题,你必须先下载 scikit-image,如果你使用 pycharm(文件 -> 设置 -> 项目解释器)然后选择库,它会工作
    猜你喜欢
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 2014-08-26
    相关资源
    最近更新 更多