一、引言
matlab跑算法,生成并保存大量相似的结果图片,现在使用深度学习算法对这些图片进行训练,但保存的图片包含边框,存在干扰,现在要去除这些边框。
二、处理效果
1.批量处理之前举例
2.批量处理之后举例
三、处理程序
1.在裁剪之前我需要知道裁剪的位置参数,由于这批照片要裁剪的位置固定,现选取其中一张交互式确定其裁剪范围。
% 读取样例图片
sampleImagePath = 'E:\zhaojunqi\CUT_FROM\12-1.jpg';
sampleImage = imread(sampleImagePath);
% 交互式选择剪裁区域
figure, imshow(sampleImage);
h = imrect;
position = wait(h);
% position 是一个包含 [x, y, width, height] 的数组
cropRect = position;
% 打印出剪裁参数
disp(['剪裁参数: ', mat2str(cropRect)]);
在图片上拉框确定大致的裁剪范围,得到裁剪参数(这个参数就是拉框的左上顶点距离原始图片左侧和上侧的像素数+拉框的宽和高的像素数):
2.将输出的参数填写下边程序对应位置即可
% 设置路径
inputFolder = 'E:\zhaojunqi\CUT_FROM'; % 输入文件夹路径
outputFolder = 'E:\zhaojunqi\CUT_OUT'; % 输出文件夹路径
if ~exist(outputFolder, 'dir')
mkdir(outputFolder);
end
% 剪裁参数 (从交互式选择中获得,将上边程序得到的参数填写至此)
cropRect =[113 60 582 511];
% 获取所有图片文件
imageFiles = dir(fullfile(inputFolder, '*.jpg')); % 图片格式为 jpg
% 遍历每张图片并进行剪裁
for i = 1:length(imageFiles)
% 读取图片
imagePath = fullfile(inputFolder, imageFiles(i).name);
img = imread(imagePath);
% 剪裁图片
croppedImg = imcrop(img, cropRect);
% 保存剪裁后的图片
[~, name, ext] = fileparts(imageFiles(i).name);
outputImagePath = fullfile(outputFolder, [name, '_cropped', ext]);
imwrite(croppedImg, outputImagePath);
end
disp('批量剪裁完成');
运行结束后可以得到E:\zhaojunqi\CUT_FROM这个文件夹下所有.jpg图片的裁剪结果,如果不是jpg格式,则程序中后缀更改即可。