要在鼠标移动时实时显示正方形,请使用 '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。

MATLAB 实时显示鼠标移动的正方形

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

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