仅做记录 ,代码质量勿喷。
%% 清空
close all;
clear all;
clc;
%% 标注颜色:Red or Green or Blue
labelColor='R';
%% 原始图片
labelFolder = uigetdir('F:/','请选择标注文件夹');
%% 设置保存路径
mkdir([labelFolder '\crack']); %%裂缝文件夹
crackFolder = [labelFolder '\crack'];
%% 获取文件
labelFile = dir(fullfile(labelFolder,'*.JPG'));%%获取标注文件
labelCount = length(labelFile); %%标注文件数量
%% 遍历 相减 二值化
for i = 1:labelCount
%% 原始图片
labelName = labelFile(i).name;
imageLabel = imread([labelFolder,'\',labelName]);
%% 新建二值图像
[row,col]=size(imageLabel);
imgBinary=zeros(row,col/3);
%% 读取像素 赋新值
xjR=imageLabel(:,:,1);
xjG=imageLabel(:,:,2);
xjB=imageLabel(:,:,3);
for r=1:row
for c=1:col/3
red=xjR(r,c);
green=xjG(r,c);
blue=xjB(r,c);
if labelColor=='R'
if (red>200)&&(green<20)&&(blue<20)
imgBinary(r,c)=255;
else
imgBinary(r,c)=0;
end
elseif labelColor=='G'
if (red<20)&&(green>200)&&(blue<20)
imgBinary(r,c)=255;
else
imgBinary(r,c)=0;
end
elseif labelColor=='B'
if (red<20)&&(green<20)&&(blue>200)
imgBinary(r,c)=255;
else
imgBinary(r,c)=0;
end
end
end
end
%% 闭运算
se=strel('disk',3');%结构元素
imgClose=imclose(imgBinary,se);%直接闭运算
%% 保存
imwrite(imgClose,[crackFolder '\' [labelName(1:end-4) '.png']]);
end
msgbox('!KO');
红色重,绿色轻
%% 清空
close all;
clear all;
clc;
%% 标注颜色:红色重 绿色轻
%%原始图片
labelFolder = uigetdir('F:/','请选择标注文件夹');
%% 设置保存路径
mkdir([labelFolder '\crack']); %%裂缝文件夹
crackFolder = [labelFolder '\crack'];
%% 获取文件
labelFile = dir(fullfile(labelFolder,'*.JPG'));%%获取标注文件
labelCount = length(labelFile); %%标注文件数量
%% 遍历 相减 二值化
for i = 1:labelCount
%% 原始图片
labelName = labelFile(i).name;
imageLabel = imread([labelFolder,'\',labelName]);
%% 新建二值图像
[row,col]=size(imageLabel);
imgNew=zeros(row,col/3);
%% 读取像素 赋新值
for r=1:row
for c=1:col/3
red=imageLabel(r,c,1);
green=imageLabel(r,c,2);
blue=imageLabel(r,c,3);
if (red>200)&&(green<20)&&(blue<20)
imgNew(r,c,1)=255;
imgNew(r,c,2)=0;
imgNew(r,c,3)=0;
elseif (red<20)&&(green>200)&&(blue<20)
imgNew(r,c,1)=0;
imgNew(r,c,2)=255;
imgNew(r,c,3)=0;
else
imgNew(r,c,1)=0;
imgNew(r,c,2)=0;
imgNew(r,c,3)=0;
end
end
end
% %% 闭运算
% se=strel('disk',3');%结构元素
% imgClose=imclose(imgNew,se);%直接闭运算
%% 保存
imwrite(imgNew,[crackFolder '\' [labelName(1:end-4) '.png']]);
end
msgbox('!KO');