MATLAB 实时显示鼠标移动的正方形
要在鼠标移动时实时显示正方形,请使用 'imshow' 函数在每次鼠标移动时更新图像。以下是修改后的代码:
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
for kk=1:4
[x,y] = ginput(1);
% 绘制正方形矩形框
rect = rectangle('Position', [x(1), y(1), abs(99), abs(99)], 'EdgeColor', 'r', 'LineWidth', 2);
while true
[x_new, y_new] = ginput(1);
% 更新正方形矩形框的位置
set(rect, 'Position', [x(1), y(1), abs(x_new - x(1)), abs(y_new - y(1))]);
% 更新图像显示
j = imcrop(a, [x(1), y(1), abs(x_new - x(1)), abs(y_new - y(1))]);
set(h, 'CData', j);
drawnow;
end
% 保存图像
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(1),y(1),abs(x_new - x(1)),abs(y_new - y(1))]);
imwrite(cc,['D:\桌面\陈家山煤矸\4000\9通道同时裁剪\',num2str(c),'\gangue\','ganguec4',int2str(i-3),'-',int2str(kk),'.JPG']);
end
% 按任意键继续下一次操作
pause;
end
close
end
在这个修改后的代码中,我们使用 'imshow' 在初始时显示图像 'a',并使用 'hold on' 保留图像。然后,我们绘制一个红色的正方形矩形框,并将其保存在变量 'rect' 中。接下来,我们使用一个无限循环来监听鼠标移动事件,并在每次移动时更新正方形矩形框的位置和图像显示。当按下任意键时,程序会继续进行下一次操作。我们使用 'pause' 来暂停程序执行,直到按下任意键。
请注意,当程序运行时,你需要在图像窗口上进行鼠标移动,然后按下任意键继续下一次操作。同时,你需要确保安装了 Image Processing Toolbox。
原文地址: https://www.cveoy.top/t/topic/AUp 著作权归作者所有。请勿转载和采集!