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

代码解释:

  1. 设置路径和读取图像: - path: 设置图像所在文件夹的路径。 - path0: 拼接路径,指向包含图像的子文件夹。 - files0: 获取子文件夹中所有文件的信息。 - len0: 计算文件数量。

  2. 循环处理每张图像: - for i=3:len0: 循环处理从第三个文件开始的所有图像文件。 - imread(): 读取指定路径的图像。 - imshow(): 显示读取的图像。

  3. 获取用户输入并绘制正方形: - ginput(1): 等待用户在图像上点击一次鼠标,获取点击坐标 (x, y)。 - rectangle(): 使用获取的坐标绘制一个边长为99像素的红色正方形。

  4. 裁剪图像并显示: - imcrop(): 裁剪指定区域的图像。 - figure,imshow(j): 新建一个窗口,显示裁剪后的图像。 - imshow(j,'initialMagnification','fit'): 调整显示比例,使图像适应窗口大小。

  5. 保存裁剪后的图像: - imwrite(): 将裁剪后的图像保存到指定路径。

  6. 清除图形窗口: - clf: 清除当前图形窗口的内容,为下一张图像的显示做准备。

总结

这段代码可以帮助用户快速裁剪大量图像,并实时查看裁剪结果。通过修改代码中的参数,用户可以自定义裁剪区域的大小、形状和保存路径等信息。


原文地址: https://www.cveoy.top/t/topic/AMi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录