Matlab实时图像裁剪:实现正方形区域的动态可视化
Matlab实时图像裁剪:实现正方形区域的动态可视化
本文介绍如何使用Matlab代码实现实时图像裁剪,并使用'clf'函数动态更新正方形裁剪区域,从而实现可视化交互。
代码功能
以下Matlab代码可以读取指定文件夹中的图像,并允许用户在图像上绘制正方形区域进行裁剪。代码会实时显示裁剪后的图像,并将其保存到指定路径。
代码解析matlabclcclear all
path='D:\桌面\陈家山煤矸\4000\矸-分开';path0=strcat(path,'0');
files0=dir(fullfile(path0));len0=length(files0);
for i=3:len0 a=imread(strcat(files0(3).folder,'',files0(i).name)); imshow(a); for kk=1:4 [x,y] = ginput(1); % 绘制正方形矩形框 rectangle('Position', [x(1), y(1), abs(99), abs(99)], 'EdgeColor', 'r', 'LineWidth', 2);
[j,pic_1] = imcrop(a,[x(1),y(1),abs(99),abs(99)]); figure,imshow(j); imshow(j,'initialMagnification','fit')
% imwrite(j,['D:\桌面\陈家山煤矸\4000\9通道同时裁剪\0\coal','coalc4',int2str(i-3),'-',int2str(kk),'.JPG']); imwrite(j,['D:\桌面\陈家山煤矸\4000\9通道同时裁剪\0\gangue','ganguec4',int2str(i-3),'-',int2str(kk),'.JPG']); %F:\待切割图片*.JPG 5 %裁剪其他8波段 for c=1:8 path1=strcat(path,num2str(c)); files1=dir(fullfile(path1)); %len1=length(files0); a1=imread(strcat(path1,'',files1(i).name)); [cc,pic_1] = imcrop(a1,[x(1),y(1),abs(99),abs(99)]);% imwrite(cc,['D:\桌面\陈家山煤矸\4000\9通道同时裁剪',num2str(c),'\coal','coalc4',int2str(i-3),'-',int2str(kk),'.JPG']); imwrite(cc,['D:\桌面\陈家山煤矸\4000\9通道同时裁剪',num2str(c),'\gangue','ganguec4',int2str(i-3),'-',int2str(kk),'.JPG']);
end close clf % 清除图形窗口 end %按ctrl+c停止 end
代码解释:
-
设置路径和读取图像: -
path: 设置图像所在文件夹的路径。 -path0: 拼接路径,指向包含图像的子文件夹。 -files0: 获取子文件夹中所有文件的信息。 -len0: 计算文件数量。 -
循环处理每张图像: -
for i=3:len0: 循环处理从第三个文件开始的所有图像文件。 -imread(): 读取指定路径的图像。 -imshow(): 显示读取的图像。 -
获取用户输入并绘制正方形: -
ginput(1): 等待用户在图像上点击一次鼠标,获取点击坐标 (x, y)。 -rectangle(): 使用获取的坐标绘制一个边长为99像素的红色正方形。 -
裁剪图像并显示: -
imcrop(): 裁剪指定区域的图像。 -figure,imshow(j): 新建一个窗口,显示裁剪后的图像。 -imshow(j,'initialMagnification','fit'): 调整显示比例,使图像适应窗口大小。 -
保存裁剪后的图像: -
imwrite(): 将裁剪后的图像保存到指定路径。 -
清除图形窗口: -
clf: 清除当前图形窗口的内容,为下一张图像的显示做准备。
总结
这段代码可以帮助用户快速裁剪大量图像,并实时查看裁剪结果。通过修改代码中的参数,用户可以自定义裁剪区域的大小、形状和保存路径等信息。
原文地址: https://www.cveoy.top/t/topic/AMi 著作权归作者所有。请勿转载和采集!