MATLAB批量裁剪图片

一、引言

        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格式,则程序中后缀更改即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值