使用 ginput 在 MATLAB 中获取两个指定点并裁剪图像
如果你想通过 ginput 获取两个指定的点,可以使用以下代码:
clc
clear 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));
h = imshow(a);
hold on
% 绘制初始的100x100矩形框
rect = rectangle('Position', [1, 1, 100, 100], 'EdgeColor', 'r', 'LineWidth', 2);
for kk=1:4
[x,y] = ginput(2);
% 获取两个指定点的坐标
x1 = x(1);
y1 = y(1);
x2 = x(2);
y2 = y(2);
% 更新矩形框的位置
x_min = min(x1, x2);
y_min = min(y1, y2);
width = abs(x2 - x1);
height = abs(y2 - y1);
set(rect, 'Position', [x_min, y_min, width, height]);
% 更新图像显示
j = imcrop(a, [x_min, y_min, width, height]);
set(h, 'CData', j);
drawnow;
% 保存图像
imwrite(j,['D:\桌面\陈家山煤矸\4000\9通道同时裁剪\0\gangue\','ganguec4',int2str(i-3),'-',int2str(kk),'.JPG']);
for c=1:8
path1=strcat(path,num2str(c));
files1=dir(fullfile(path1));
a1=imread(strcat(path1,'\',files1(i).name));
cc = imcrop(a1,[x_min, y_min, width, height]);
imwrite(cc,['D:\桌面\陈家山煤矸\4000\9通道同时裁剪\',num2str(c),'\gangue\','ganguec4',int2str(i-3),'-',int2str(kk),'.JPG']);
end
% 按任意键继续下一次操作
pause;
end
close
end
在这个修改后的代码中,我们使用 ginput(2) 获取两个指定点的坐标 x 和 y。然后,我们根据这两个点的坐标计算矩形框的位置和大小,并更新矩形框的位置。接下来,我们根据矩形框的位置裁剪图像,并更新图像显示。最后,我们保存裁剪后的图像,并按下任意键继续下一次操作。
请注意,当程序运行时,你需要在图像窗口上依次点击两个指定点,然后按下任意键继续下一次操作。同时,你需要确保安装了 Image Processing Toolbox。
原文地址: https://www.cveoy.top/t/topic/C5I 著作权归作者所有。请勿转载和采集!