如何在matlab里批量将JPG格式图片转成MAT格式文件?

http://blog.csdn.net/yongjiankuang/article/details/72824081

考虑到很多人遇到图片转成.mat文件的需要,本文特此贴出一次性将多个文件夹下的图片转化为.mat,同时给数据打上标签,希望能够帮到大家!

%这里是主函数:命名为readImg.m;

[plain]  view plain  copy
  1. clc;clear;  
  2. %---read_image;  
  3. filepath = 'G:\人脸重建\data\src_all\';%图片路径可以根据自己需要修改;  
  4. pic = '*jpg';%图片格式,根据自己的图片格式进行修改;  
  5. database = build_database_src(filepath,pic);  
%build_database_src.m子函数;

[plain]  view plain  copy
  1. function database = build_database_src(rt_data_dir,suffix)  
  2.   
  3. fprintf('dir the database');  
  4. subfolders = dir(rt_data_dir);  
  5.   
  6. database = [];  
  7.   
  8. database.imnum = 0;  
  9. database.cname = {};  
  10. database.label = [];  
  11. database.path = [];  
  12. database.nclass = 0;  
  13. label = 0;  
  14.   
  15. k = 1;  
  16. src_x = [];  
  17. src_y = [];  
  18.   
  19. for ii = 1 : length(subfolders)  
  20.     subname = subfolders(ii).name;  
  21.       
  22.     if ~strcmp(subname,'.') & ~strcmp(subname,'..')  
  23.           
  24.         database.nclass = database.nclass + 1;  
  25.         database.cname{database.nclass} = subname;  
  26.           
  27.         frames = dir(fullfile(rt_data_dir,subname,suffix));  
  28.         c_num = length(frames);  
  29.           
  30.         database.imnum = database.imnum + c_num;  
  31.         database.label = [database.label;ones(c_num,1) * database.nclass];  
  32.           
  33.         label = numel(database.cname);  
  34.           
  35.         for jj = 1 : c_num  
  36.             fprintf('folder : %d , num : %d \n',ii - 1,jj);  
  37.               
  38.             kk1 = frames(jj).name;%显示具体图片名;  
  39.             c_path = fullfile(rt_data_dir,subname,frames(jj).name);  
  40.             database.path = [database.path,c_path];  
  41.             img = imread(database.path);%读取图片;  
  42.             im = imresize(img,[64,64]);%设置图片大小;  
  43.               
  44.             if(length(size(im)) == 3)%如果是彩色图进行灰度化(根据个人需要);  
  45.                 gray = rgb2gray(im);  
  46.             else  
  47.                 gray = im;  
  48.             end  
  49.               
  50.             gray = double(gray) / 255;%对图片数据做归一化(根据个人需要);  
  51.             database.path = [];  
  52.               
  53.             src_x(:,:,k) = gray;%存储图像数据;  
  54.             src_y(1,k) = label;%给数据加标签;  
  55.             k = k + 1;  
  56.         end  
  57.     end  
  58.       
  59. end  
  60.   
  61. %保存转化好的.mat文件;  
  62. file = ['src_x.mat'];  
  63. save(file,'src_x','-mat');  
  64. file = ['src_y.mat'];  
  65. save(file,'src_y','-mat');  
  66.   
  67. end  
我的路径:G:\人脸重建\data\src_all,如下所示:

运行程序可以看到生成两个.mat文件:

### 回答1: 可以使用MATLAB中的imwrite函数来将jpg图片转换为tiff格式。使用方法如下: 首先,读取jpg图片: ``` img = imread('image.jpg'); ``` 然后使用imwrite函数将图片保存为tiff格式: ``` imwrite(img, 'image.tiff'); ``` 如果要保存为压缩的tiff格式,可以使用以下代码: ``` imwrite(img, 'image.tiff', 'compression', 'jpeg'); ``` 其中,compression参数指定压缩算法,可以设置为'jpeg'(表示使用JPEG压缩算法)、'packbits'(表示使用PackBits压缩算法)或'none'(表示不压缩)。 希望这些信息能帮到你! ### 回答2: 用MATLAB可以很方便地将jpg图片格式转换成tiff格式。下面是一个简单的示例代码: ```matlab % 读入jpg图片 img = imread('input.jpg'); % 获取输入图片的信息 info = imfinfo('input.jpg'); % 将jpg格式转换为tiff格式 imwrite(img, 'output.tiff', 'Compression', 'lzw', 'ResolutionUnit', info.Unit, 'XResolution', info.XResolution, 'YResolution', info.YResolution); % 打印转换成功的消息 disp('转换成功!'); ``` 代码步骤解析: 1. 使用`imread`函数读入jpg图片,将图片数据存储在`img`变量中。 2. 使用`imfinfo`函数获取输入图片的信息,存储在`info`变量中,这些信息包括单位和分辨率等。 3. 使用`imwrite`函数将`img`数据以tiff格式写入到文件`output.tiff`中,`Compression`参数设为`lzw`表示使用LZW压缩算法。 4. 将`tiff`图片的单位和分辨率等信息设置为与输入图片相同,使用`info.Unit`,`info.XResolution`和`info.YResolution`等参数。 5. 使用`disp`函数打印转换成功的消息。 以上代码示例了如何使用MATLABjpg图片格式转换成tiff格式,你可以替换`input.jpg`为你自己的jpg图片文件路径,然后运行代码就可以得到你想要的tiff格式图片了。 ### 回答3: 可以使用MATLAB的Image Processing Toolbox中的imread函数来读取jpg图片,并使用imwrite函数将其转换为tiff格式。 下面是一个简单的MATLAB代码示例: ```matlab % 读取jpg图片 image = imread('input.jpg'); % 将jpg图片转换为tiff格式并保存 imwrite(image, 'output.tiff'); ``` 在这个示例中,首先使用imread函数读取名为input.jpgjpg图片,并将其存储在名为image的变量中。然后,使用imwrite函数将这个图片变量以tiff格式保存到名为output.tiff的文件中。 在实际使用时,你需要将'input.jpg'替换为你实际的jpg图片路径,并将'output.tiff'替换为你想要保存的tiff图片路径。 需要注意的是,MATLAB中的imwrite函数支持多种图片格式的转换,包括tiff格式。你可以根据需要在函数的第二个参数中指定想要的图片格式。 希望以上回答对你有帮助!
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值