Read and save the roi area in picture from the mat workspace data created by Matlab image labeler

原文出处:https://blog.csdn.net/tsyccnh/article/details/50812632   many thinks  to the originial author

由于用的是matlab2018b, image Labeler的数据生成的mat文件 与原文的变量有差异,因此做了修改。

功能:用于将标记的图片区域存为小图。

大部分程序时基于原文,仅做了部分修改,以适应新版本的要求。如果作者认为我侵权了,请告知。我删除。

Test by matlab 2018b

%作者:史丹利复合田  edit by Jun Zhang
%日期:2016年3月  edit by   Mar 28,2019
%函数说明:读取通过MATLAB Training Image标记并保存的labelingSession数据,将
%这些标记的ROI区域转换成bmp图片并存储。图片的名称采用了时间+序号的存储方式,
%所以多次读取这一函数并将结果存入同一文件夹也不会造成命名冲突
%示例调用方式 Save_Raw_Samples_ROIs('E:\TSY\Code\labelingSession.mat','G:\Samples\2016-3-5');
%**************************************************************************
%第一个参数:通过MATLAB Training Image
%Labeler工具导出的labelingSession数据,为mat格式,这里只需输入其全路径即可,如'C:\labelingSession.mat'
%第二个参数:为待导出的文件存储的文件夹,如'G:\Samples\2016-3-1'
%所有标记过的图像从0开始索引为文件名进行存储
function Save_Raw_Samples_ROIs(labelingsession_data_path,output_path)
%%roi_info = 
load(labelingsession_data_path);%% just load it, the gTruth in the workspace
image_counts = size(gTruth.LabelData,1);%struct结构与普通矩阵的索引方式不同,第一个为列,第二个为行
roi_index = 0;
pause(1);%延时1s,确保不会出现重命名
current_time = datestr(now,'yyyy-mm-dd-HH-MM-SS_');
if ~isdir(output_path) %判断路径是否存在
    mkdir(output_path);
end
for i = 1:image_counts%对每张图依次处理,提取ROI区域
image_info = gTruth.LabelData{i,1}; %% read the label area
image = imread(gTruth.DataSource.Source{i,1}); %% read image from the label
objectBoundingBoxes=image_info{1};
box_rows = size(image_info{1},1);  %% get the row
    for j = 1:box_rows%对每张图的所有ROI区域进行提取
        box =objectBoundingBoxes(j,:);
        cropped_roi = imcrop(image,box);
        %imshow(cropped_roi);
        image_full_name = strcat(output_path,'\',current_time,num2str(roi_index),'.bmp');
        imwrite(cropped_roi,image_full_name);
        roi_index=roi_index + 1;
    end
end
 

调用

>> Save_Raw_Samples_ROIs('F:\work\images_big_rebar\train\train_images\RebarTrainds.mat','F:\work\images_big_rebar\train\smallRebar')
>> 

结果如下,达到了截取效果。

才开始做deep learning, 因此 后面的步骤自己摸索。

 

感谢@史丹利复合田  提供的程序让我们的工作简化了。

 

result of ROI

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做一个码农都是奢望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值