Matlab 实现鼠标移动时实时显示正方形框
本文介绍使用 Matlab 代码实现鼠标移动时实时显示正方形框的功能。
要实现在鼠标移动时实时显示正方形,请使用 imshow 函数在每次鼠标移动时更新图像。以下是修改后的代码:
for kk=1:4
[x,y] = ginput(1); % 确定图像上的两点利用ginput函数,返回值是两点的坐标
% 创建一个新的图像窗口
fig = figure();
imshow(a);
% 绘制正方形矩形框
rect = rectangle('Position', [x(1), y(1), abs(99), abs(99)], 'EdgeColor', 'r', 'LineWidth', 2);
% 监听鼠标移动事件
set(fig, 'WindowButtonMotionFcn', @(src, event) updateRect(src, event, a, rect));
% 等待用户完成鼠标移动操作
waitfor(fig);
end
function updateRect(src, event, a, rect)
% 获取鼠标当前位置
C = get(gca, 'CurrentPoint');
x = C(1,1);
y = C(1,2);
% 更新正方形矩形框的位置
set(rect, 'Position', [x, y, abs(99), abs(99)]);
% 更新图像显示
imshow(a);
end
在这个修改后的代码中,我们首先创建一个新的图像窗口,并在其中显示图像 a。然后,我们绘制一个红色的正方形矩形框,并将其保存在变量 rect 中。接下来,我们使用 set 函数为图像窗口添加 WindowButtonMotionFcn 事件监听器,该监听器在鼠标移动时调用 updateRect 函数。在 updateRect 函数中,我们获取鼠标当前位置,并根据该位置更新正方形矩形框的位置。最后,我们使用 imshow 函数更新图像显示。
这样,当你运行代码时,图像窗口将显示鼠标移动时的实时正方形框。请注意,为了在用户完成鼠标移动操作后继续执行代码,我们使用了 waitfor 函数来暂停程序,直到图像窗口被关闭。
原文地址: https://www.cveoy.top/t/topic/ADL 著作权归作者所有。请勿转载和采集!