精华内容
下载资源
问答
  • 如何使用matlab批量导入图片

    千次阅读 2020-05-01 12:08:35
    如何使用matlab批量导入图片思路程序实现程序中用到的函数dir()函数strcat函数isempty函数save函数eval函数 思路 先对指定文件夹进行扫描,将.jpg等后缀的图片文件信息保存,再依次将每个图片数据导入,最后将每一个...

    思路

    先对指定文件夹进行扫描,将.jpg等后缀的图片文件信息保存,再依次将每个图片数据导入,最后将每一个数据按照变量的形式保存到指定.mat文件

    程序实现

    下边给出matlab代码:

    function import_imageDatas(image_path)
        image_list=dir(fullfile(image_path,'*.jpg'));%列出path路径下所有后缀为.jpg的文件
        image_num=length(image_list);%获取图片数量
        if image_num==0
            fprintf('未找到任何图像\n');
        else
            fprintf('已找到%d张图像\n',image_num);
            for i=1:image_num
                image_name=image_list(i).name;%获取每一张图片名称
                %用eval函数可以实现将每一张图片以变量形式保存
                val=strcat('Image',num2str(i));
                eval([val,'=imread(fullfile(image_path,image_name));']);%导入每一张图片,注意,这里导入的是三通道彩色图像
                if i==1
                    save('ImageDatas.mat',val);%将图片数据以.mat文件保存下来
                else
                    save('ImageDatas.mat',val,'-append');%将图片数据以.mat文件保存下来
                end
            end
        end
    end
    

    程序中用到的函数

    dir函数

    matlab控制台中输入 help('dir'),获取帮助信息:
    控制台信息
    需要说明的是,dir函数中的自变量为 ‘*.jpg’ 时,意思是列出所有后缀为 .jpg 的文件。
    控制台信息

    fullfile函数

    控制台中输入help('fullfile'),得到以下信息:
    在这里插入图片描述
    该函数的目的是将路径与文件名连接。

    isempty函数

    在控制台中输入help('isempty')得到以下信息:
    在这里插入图片描述

    save函数

    在控制台中输入help('save'),得到以下信息:
    在这里插入图片描述
    值得说明的是,本程序中使用了‘-append’参数,这是为了在保存某个变量的时候不覆盖之前的变量,当使用‘-append’参数时必须保证保存的目标文件存在且不为空,否则程序会报错。

    eval函数

    在控制台中键入help('eval')得到以下信息:
    在这里插入图片描述
    帮助信息里有些抽象,这里解释一下:
    其实eval('a=1')a=1等价,这个函数的作用就是输入固定语句,那么问题来了,为什么我们不直接输入语句而是使用eval函数呢,在我们的程序中,就使用了eval函数:

    %用eval函数可以实现将每一张图片以变量形式保存
    val=strcat('Image',num2str(i));
    eval([val,'=imread(strcat(image_path,image_name));']);
    

    在我们这个例子中,eval函数可以实现将每一组图片数据单独保存在某个变量中。

    程序运行结果

    在控制台输入import_imageDatas('你的文件夹名称')运行我们的程序
    然后运行load('ImageDatas.mat')或双击ImageDatas.mat文件,即可加载导入好的图像数据,如下图:
    在这里插入图片描述
    执行imshow(Image1)即可显示图片,如下图:
    在这里插入图片描述

    使用资源说明:

    数据集来源:

    链接: https://www.yanxishe.com/postDetail/18396.

    展开全文
  • matlab批量导入文件

    千次阅读 2016-01-09 15:02:23
    批量导入数据到Matlab

    转载:http://www.cnblogs.com/woshitianma/p/3724922.html

    循环读取图片第一种方法①List =dir('*.jpg'); 
    %如需其它图片格式支持,可以自己【重载dir()】函数,实现查找所有图片文件的功能,
    %如果图片是其它路径,可以用 ["路径" ".扩展名"] 字符串来实现。
    k =length(dList);
    for i=1:1:k
    image_data{i}=imread(dList(i).name);
    end
    第二种方法②I=ones(8,5);
    q=reshape(49:56,8,1);
    I(:,1)=q;
    I(:,2)='.';
    I(:,3)='b';
    I(:,4)='m';
    I(:,5)='p';
    L=setstr(I); %将ASCII码转为字符串;
    第三种方法③
    images= [ ];
    for i= 1:M
    str= strcat ('D: \MATLAB\work\', int2str(i) , ’.bmp’) ; % 连接字符串形成图像的文件名。
    img= imread(str);
    [rows cols]= size(img) ; % 获得图像的行和列值。
    temp= reshape ( img, rows*cols, 1) ; % 创建一个(N1*N2)×1 矩阵。
    images= [ images temp ]; % 完成循环后的images 矩阵是一个(N 13 N 2) ×M 矩阵。
    end
    上述三种方法中,第一种主要利用dir()函数,获得文件夹内图片的信息,然后创建一个元胞数组,将图片文件信息送入元胞数组
    第二种方法是已知图片文件名,并且按数字顺序排列,然后利用数字和字符串之间的转换来进行。
    第三种方法利用字符串连接函数strcat()函数巧妙运用循环实现图片的连续读入。
    \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

    文件名规律(比如qnl260.200,qnl260.201,qnl260.202~~qnl260.300)的多个二进制文件进行同样的处理,
    问题是怎么循环的读入这些文件,就是想编个程序让它读取第一个数据处理,然后读取第二个数据处理,以此类推
    file=dir('*.txt');
    data=cell(1,size(file,1));
    for    i=1:size(file,1);
           data{1,i}=read(file(i).name);
    end

    获取路径的文件索引后读入
    具体的read模式可以参见help
    \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
     现在假定有一个数据文件叫data.dat,它的前面2k是存放参数的,我们做数据处理的时候需要跳过去,后面的数据是16位整数类型的,每组数据有512个。现在要把该数据文

    件的所有数据读入一个nx512的矩阵中,n的个数不定,根据数据文件中的数据而定。
    用.m脚本的方式编写如下:
    % deal data from specified data file
    clear ;
    data_fname = 'data.dat' ; % 这里是文件名
    jump_distance = 2048 ;    % 这里是跳过的字节数
    % 打开方式为二进制打开,其实'r'就行,matlab是默认二进制形式打开文件的
    file_id = fopen(data_fname, 'rb');
    % 从文件开始跳过jump_distance个字节
    fseek(file_id, jump_distance, 'bof');
    % 先手工构造一个1x512大小的矩阵
    raw_data = [1:1:512] ;
    while feof(file_id) == 0
        % 这就是大名顶顶的fread了,数据类型是int16,每次读入512个数
        % raw_array每次都是512x1的矩阵,ele_count为读入的数的个数(正常情况下应为512)
        [row_array, ele_count] = fread(file_id, 512, 'int16') ;
        if ele_count < 512 % elecount < 512代表数据不够,已经到了文件的结尾
            break ;
        else
            % 将512x1的row_array转置一下,变为1x512的矩阵
            row_array = row_array'  ;
            % 然后,将row_array追加到raw_data中
            raw_data = [raw_data; row_array] ;
        end
    end
    % get off the first line [1:1:512]
    % 这里就是要把raw_data的第一行数据手工构造的那行数据给去掉,剩下的就都是文件中的数据了
    raw_data(1,:)=[] ;
    % 关闭文件
    fclose(file_id);
    % delete other usless vars
    % 这里是把用过的变量都删除掉,免得workspace里面乱七八糟的什么都有,这是个好习惯,呵呵。
    \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    matlab中读取某个文件夹下所有数据文件
    怎么用matlab读取多个数据文件?

    1:如果文件名规则
    % 文件目录:
    my_dir=' /home/my_calculation1/test1/';
    %文件名前缀
    my_pre_T='test';%文件数目fnum =1:32; %Read filesfor i=1:length(fnum) filename = [my_dir,prefix_T1 num2str(fnum(i))]; 然后dlmread,fopen等操作就不需详写

    了!与单个文件一样。
    end
     
    2:文件夹数据批量读取的问题,命名无规则
    在windows下很简单,ls函数便可以得到一个包含所有文件名的字符矩阵。可惜在unix下得到的是个字符行向量。当然,处理下也可以批量读取数据文件,不过不想再写了。

    因为另外一个函数也可以实现批量处理数据文件的功能。即dir函数
    LS displays the results of the 'ls' command on UNIX. 
    On UNIX, LS returns acharacter row vectorof filenames separated by tab and space characters.
    On Windows, LS returns anm-by-n character array of filenames, where m is the number of filenames and n is the number of characters in the longest

    filename found. Filenames shorter than n characters are padded with space characters.
    下面介绍下使用dir函数读取文件夹中文件的程序
    2.1 读取所有扩展名为.dat的数据文件,并进行处理。
    matlab中,也可以使用通配符的。下面就来展示下:
    现在有一个文件夹里面有50个的.dat文件.每个文件大概三万行.两列,第一列是字符串,第二列是浮点数字.批量读取这个文件夹里的.dat文件的第二列。读取完以后的数组变

    量名就是.dat的文件名 
    假定.dat文件在/home/my_calculation1/test1/ 文件夹下,文件名符合matlab变量名的命名规则,要读取第二列的浮点数字为数组并以文件名为变量名。

    mydir='/home/my_calculation1/test1/';
    temp1=dir([mydir,'*.dat']);
    num_temp1=length(temp1);
    for i1=1:num_temp1
    filename=[mydir,temp1(i1).name];
    temp=dlmread(filename,'',0,1);
    eval([temp1(i1).name(1:end-4),'=temp;'])
    dlmread,fopen等操作就不需详写了!与单个文件一样。end
    注意:如果直接使用 temp1=dir(mydir]);读取文件夹下所有文件,应当从第三个开始才是目录下的文件。另外,使用dir还可以遍历一个文件夹下的所有子文件夹。 1、利用

    dir(外层文件夹)获取子文件夹;
    2、利用dir(子文件夹)获取子文件夹中的文件信息;
    3、遍历文件,做处理;对于遍历文件夹,也可以使用mathworks网站上的函数dirr轻松搞定。下面是饮水思源论坛上的做法。没有进行整理。敬请原谅。
    论坛地址:

    现在有个文件夹data中的数据想要批量处理,
    而data中有多个子文件夹,名字分别为01001,01002,…,每个子文件夹中有多个数据,假设为ECG.txt,PCG.txt,…。
    现在我想要依次读取01001中的各数据进行处理,然后读取01002中的进行处理,依此类推,直到将data文件夹中的数据全都处理完。
    我知道在labview中可以把文件夹的名字弄成字符拼接后可以不断的循环读取,不知道在matlab中如何实现这样的功能?


    因为这几天连着做实验,今天才有时间上网看一下,
    回复比较晚。刚刚下载了名为dirr.m的文件。LIST=DIRR('D:\data');可以实现将data中的子文件夹全都读取进来。存为一个名为LIST的struct。
    以01001文件夹中的数据为例,可以知道每个数据的位置了,可是我应该如何读取出来呢?
    例如LIST(1).isdir(1)中的是CPT.txt,但是我只能得到一个存有该文件名字和大小等的struct格式,
    不知道应该如何读入该数据。eval命令不知道该如何用?试了一下eval(LIST(1).isdir(1)),出现错误,
    说是该命令不能做struct类。

     cottonsugar (棉花糖) 于 2009年09月23日18:25:30 星期三) 提到:
    fl=dirr('./');nl=length(fl);for i=1:nl fname=fl(i).name; if strcmp(fname,'XXXX') str=['load ',fname];eval(str);enden

    最后的关键就在于load那句了。str=['load(D:\data\',fl(i).name,'\',fname,')'];因为load在用的时候是:load('D:\data\01001\ECG.txt');
    现在我无法加上那个括号里面的一撇',所以总是无法把数据load上。请问这个一撇怎么加上呢?谢谢啦。我改了以后的程序如下:
    fl=dirr('D:\data');nl=length(fl);nl2=length(fl(1).isdir);
    for i=1:nl for j=1:nl2 fname=fl(i).isdir(j).name; 
    if strcmp(fname,'ECG.txt') str=['load(D:\data\',fl(i).name,'\',fname,')'];eval(str);
    end
    end
    end

    比如你想load一个文件 load('d:\ecg.txt');
    用string来表示就是str=['load(''d:\ecg.txt'');'];然后再eval(str)即可

    展开全文
  • matlab批量读入图片

    2011-05-11 15:31:39
    一张张的上传图片往往很复杂,这个是matlab用来批量读入图片的,最好是二维CT图片
  • matlab批量读取图片

    千次阅读 2019-10-06 20:12:27
    使用imread可以容易地单张读取图片,那么怎样才能批量读取一个文件夹中的多张图片呢? 如果文件夹中的图片已经编号 预置知识: cell元胞数组。cell是一种特殊的数据结构,这个数组中的数据类型是任意的 &...

      使用imread可以容易地单张读取图片,那么怎样才能批量读取一个文件夹中的多张图片呢?

     

    • 如果文件夹中的图片已经编号

    预置知识:

     

    1. cell元胞数组。cell是一种特殊的数据结构,这个数组中的数据类型是任意的
    >> C={1,'cell';{1,2,3},{}}
    
    C =
    
      2×2 cell 数组
    
        {[     1]}    {'cell'  }
        {1×3 cell}    {0×0 cell}
    
    >> cell(2,3)
    
    ans =
    
      2×3 cell 数组
    
        {0×0 double}    {0×0 double}    {0×0 double}
        {0×0 double}    {0×0 double}    {0×0 double}
    

    使用cell命令可以声明cell数组,声明格式与zeros()函数,ones()函数完全相同。

    注意cell数组是用大括号括起来的,可以直接声明,也可以使用C{index}的格式进行索引

     

    2.strcat()函数

    用来串接字符数组。可以串接一般字符数组,也可以串接元胞数组。

    如果两个字符数组都只有一个字符串,那么好说

    
    >> s1='lwz';
    >> s2='hhh';
    >> strcat(s1,s2)
    
    ans =
    
        'lwzhhh'

     如果是每个字符数组有多个元素呢?

    >> str1={'lwz','hhh'};
    >> str2={'lbw','nb'};
    >> strcat(str1,str2)
    
    ans =
    
      1×2 cell 数组
    
        {'lwzlbw'}    {'hhhnb'}
    

    可以看到是“对位串接”

     

     

    现在开始读取图片:

    n=10;
    
    I=cell(1,n);
    for i=1:n
        imName=strcat(num2str(i),'.pgm');
        I{i}=imread(imName);
    end
    • 如果图片没有编号

    cd('C:\Users\22926\Desktop\图像工程基础\s1');
    file=dir('*.pgm');
    [k,len]=size(file);
    I=cell(k,1);
    for i=1:k
        name=file(i).name;
        I{i}=imread(name);
        figure(i);
        imshow(I{i});
    end

    注:

    • cd命令的含义是切换当前路径,与DOS命令一样
    • dir命令():
    • Matlab使用dir函数获得指定文件夹下的所有子文件夹和文件,并存放在在一种为文件结构体数组中.(struct,规模是k*6,包含六个属性)

    • dir函数可以有调用方式为:
       
      dir('.')列出当前目录下所有子文件夹和文件
      dir('G:\Matlab')列出指定目录下所有子文件夹和文件
      dir('*.m')列出当前目录下符合正则表达式的文件夹和文件
    • 每次imshow()之前加一个figure(i),可以搞出多个图片显示窗口
    展开全文
  • MATLAB批量读入图片

    2017-07-30 21:16:00
    %% import pictures, and save into images{img_num} function [images] = import_... % 批量读取图片 img_path_list = dir(strcat(file_path,'*.jpg'));%获取该文件夹中所有jpg格式的图像 img_num = length(i...
    %% import pictures, and save into images{img_num}
    function [images] = import_data(file_path)
        % 批量读取图片
        img_path_list = dir(strcat(file_path,'*.jpg'));%获取该文件夹中所有jpg格式的图像  
        img_num = length(img_path_list);%获取图像总数量  
        images = cell(1, img_num);
        if img_num > 0 %有满足条件的图像  
            for i = 1:img_num %逐一读取图像  
                image_name = img_path_list(i).name;% 图像名  
                images{i} =  im2bw(imread(strcat(file_path, image_name)));
                % fprintf(' %d %s\n',i,strcat(file_path,image_name));% 显示正在处理的图像名  
            end  
        end  
    end

    转载于:https://www.cnblogs.com/ZhengPeng7/p/7260489.html

    展开全文
  • 一个是通过对话框获取子文件夹地址的子函数,另一个是批量导入并处理子文件夹中的每张图片的子函数。处理图片的子函数是用来给大家参考如何使用获取文件夹地址并且批量处理图片的,具体如何处理图片大家可以根据自己...
  • MATLAB批量图片格式

    2020-01-30 18:50:44
    clc,clear; file_path = 'C:\data\... %待转化图片的文件路径 img_path_list = dir(strcat(file_path,'*.png'));%读取该路径下文件中所有png格式图片(可改) img_num = length(img_path_list); %获取图片数量 for...
  • matlab批量导入图像代码亚夫 另一个音频特征提取器 建置状态 科主: 分支机构dev : 水蟒 安装 conda Yaafe可以使用轻松安装。 要使用conda安装此软件包,请运行: conda install -c conda-forge yaafe 码头工人 ...
  • matlab 图片批量处理

    2018-03-29 20:39:41
    matlab 图片批量处理,可以保存到你想保存的路径,是关于matlab的。很方便
  • 思路:19张纵切的带有中文文字的乱序图片,在matlab里导入图片可得到一个1980x72的...批量导入图片 function R=duqutupian() %R=[]; srcDir=uigetdir('Choose source directory.'); cd(srcDir); allnames=struct2...
  • MATLAB批量读取图片三种方法,
  • matlab批量导入图像代码版权所有(C)2016 接触: 您也可以找到并使用我的。 该工具箱已作为我的博士项目的一部分编写。 它包含用C ++和CUDA编写的Matlab卷积神经网络的实现。 大多数内核来自CUDNN v5库,其他内核...
  • Matlab批量读取文件夹内图片

    万次阅读 2018-07-06 10:30:20
    Matlab读取文件夹里所有的文件image = dir('C:\images\*.*');files = dir(fullfile('C:\\Users\\Administrator\\Desktop\\sd\\','*.jpg')); lengthFiles = length(files); for i = 1:lengthFiles; Img = imread...
  • MATLAB批量读取一个文件夹下的图片

    万次阅读 多人点赞 2018-04-23 16:07:28
    file_path = 'D:\mormal_dibright\';% 图像文件夹路径 img_path_list = dir(strcat(file_path,'*.bmp'));%获取该文件夹中所有bmp格式的图像 img_num = length(img_path_list);%获取图像总数量 I=cell(1,img_num);...
  • 今天是2019-1-29,参加完2019年美国大学生数学建模竞赛,小伙伴都回家了,就我一个人在寝室,太无聊了,就把在比赛中遇到的excel批处理,写一下思路(ps:其实我在比赛中利用的是SQLServer数据库和matlab相结合的数据...
  • % 如果你的图片命名方式是1.bmp 2.bmp....... clear;clc; file_path = '你的需要处理的图片的文件夹路径\'; img_path_list = dir(strcat(file_path,'*.bmp')); img_num = length(img_path_list); if img_num > 0 ...
  • matlab 图片批量处理

    2017-12-11 17:37:08
    通常matlab读取图片并显示的时候,是一张张导入的,而对某一目录下的批量图片的读取介绍很少,本文主要是针对此类情况,提出的一种图片批量处理的手段,通过案例助于更快上手解决问题 代码未加注释,不理解的可以...
  • MATLAB支持工作区的保存。用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时再次导入。保存工作区可以通过菜单进行,也可以通过命令窗口进行。数据导出1. 保存整个工作区选择File菜单中的Save ...
  • matlab批量txt文件导入,跪求大神给码。。。!!!!!!!!!如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表...
  • matlab 图片批量读取

    万次阅读 多人点赞 2014-09-28 20:37:11
    1。 指定路径下 单个文件夹data中所有图像 file_path = '.\data\';% 图像文件夹路径 img_path_list = dir(strcat(file_path,'*.jpg'));%获取该文件夹中所有jpg格式的图像 img_num = length(img_path_list);...
  • MATLAB批量图片保存为mat文件

    千次阅读 2019-03-15 10:16:02
    利用MATLAB批量图片保存为mat类型文件方便读取。 % %读入图片并保存为mat文件 clear all; close all; clc; %将图像的文件夹路径读入 %假设flowers文件夹下有许多flowers1.png,flowers2.png等等 namelist = ...
  • 使用matlab批量读写tiff图像

    千次阅读 2019-11-07 19:06:05
    matlab批量读取程序如下: %遍历循环读取所有tiff文件 file_path = 'E:\singleWoodSegement\CHMfenge(0.25)\';% 图像文件夹路径 img_path_list = dir(strcat(file_path,'*.tif'));%获取该文件夹中所有TIF格式的...
  • matlab批量处理excel(CSV)文件数据

    万次阅读 多人点赞 2019-01-29 21:51:25
    今天是2019-1-29,参加完2019年美国大学生数学建模竞赛,小伙伴都回家了,就我一个人在寝室,太无聊了,就把在比赛中遇到的excel批处理,写一下思路(ps:其实我在比赛中利用的是SQLServer数据库和matlab相结合的数据...
  • Matlab 图片批量复制到word中

    千次阅读 2016-11-01 15:45:00
    gco:返回当前鼠标单击的句柄值,该对象可以是除root对象外的任意图形对象,并且Matlab会把当前图形对象的句柄值存放在Figure的CurrentObject属性中 2 笔记 help中position属性解释:Positioning Figures
  • 目的:将100张图片保存为.mat文件,每一行是一张图片(一个cell),点进去是346*286的矩阵。 clc; clear all; filepath = 'F:\test_png\'; %图片路径可以根据自己需要修改; ext='*.png'; dis=dir([filepath ext]) ...
  • Edit: FML,回到家才发现用MATLAB处理出来的颜色和死了妈似的,学校的垃圾TN显示器太坑了……下文已经尽量修正。在图像处理尤其是对冻鳗扫图处理时,“颜色匹配”是一个经常需要进行的操作。因为印刷和扫描的技术和...
  • matlab批量写word

    2020-03-23 20:31:36
    % 将图片复制到剪切板 DTI.Cell(8,1).Range.Paragraphs.Item(1).Range.PasteSpecial; % 粘贴操作 Shape.Item(1).WrapFormat.Type = 3; Shape.Item(1).ZOrder('msoBringInFrontOfText'); delete(zft); % 删除句柄 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 612
精华内容 244
关键字:

matlab批量导入图片

matlab 订阅