如何在Matlab中为图像叠加10x10网格
Matlab批量为图像叠加10×10网格实现方法
你手里的图像都是固定1280×720分辨率,不需要做动态分辨率适配,用Matlab自带函数就能完成批量处理,不需要额外安装第三方工具包,新手直接按步骤操作就行。
操作步骤
- 先把所有需要处理的44张图像放到单独的空文件夹里,不要混入其他无关文件,避免程序读错
- 打开Matlab,将顶部的当前工作路径切换到你存图像的这个文件夹
- 新建一个空白脚本,把下面的代码复制进去,直接点运行就可以
%% 批量叠加10*10网格脚本 % 读取当前文件夹下的图像,按需修改后缀匹配你的图像格式 file_list = dir('*.jpg'); % 如果你的图像全是png格式,就把上一行的jpg改成png;如果同时有jpg和png,保留下面这行 file_list = [file_list; dir('*.png')]; % 已知固定分辨率 img_width = 1280; img_height = 720; % 计算网格线间隔:宽、高各分10等份 w_gap = img_width / 10; h_gap = img_height / 10; % 新建输出文件夹存结果,不会修改原图 if ~exist('grid_result', 'dir') mkdir('grid_result'); end % 逐张处理图像 for idx = 1:length(file_list) % 读取当前图像 raw_img = imread(file_list(idx).name); % 创建不可见的图窗,尺寸和原图完全一致,避免留白边 temp_fig = figure('Visible','off', 'Position',[0 0 img_width img_height]); ax = axes('Position',[0 0 1 1]); imshow(raw_img); hold on; % 画竖向网格线:10格共11条线,包含左右边缘 for x = 0:w_gap:img_width line([x, x], [0, img_height], 'Color','red', 'LineWidth',1); end % 画横向网格线 for y = 0:h_gap:img_height line([0, img_width], [y, y], 'Color','red', 'LineWidth',1); end hold off; % 保存处理后的图像到输出文件夹,文件名和原图一致 saveas(temp_fig, fullfile('grid_result', file_list(idx).name)); close(temp_fig); % 关闭临时图窗,避免占用内存 fprintf('进度:已完成第%d张/%d张\n', idx, length(file_list)); end disp('全部图像处理完成,结果存放在grid_result文件夹内');
常用参数调整
- 如果不需要给图像最外侧加边框线,把两个画线循环的范围从
0:w_gap:img_width改成w_gap:w_gap:img_width-w_gap、0:h_gap:img_height改成h_gap:h_gap:img_height-h_gap即可,画出来的线刚好把图像内部分成10×10的区块 - 网格颜色直接修改
line函数里的Color参数即可:红色对应'red'、白色'white'、黑色'black'、黄色'yellow';线宽修改LineWidth后面的数值,数字越大线越粗 - 如果你的图像是bmp、tif等其他格式,照着开头读取文件的格式,新增一行
file_list = [file_list; dir('*.bmp')];即可匹配对应格式
提示:运行前建议备份一次原图,虽然代码不会改动原文件,备份可以避免误操作丢文件。
内容的提问来源于stack exchange,提问作者Michelle Melin
相关产品推荐
相关产品推荐

