如果你想通过 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) 获取两个指定点的坐标 xy。然后,我们根据这两个点的坐标计算矩形框的位置和大小,并更新矩形框的位置。接下来,我们根据矩形框的位置裁剪图像,并更新图像显示。最后,我们保存裁剪后的图像,并按下任意键继续下一次操作。

请注意,当程序运行时,你需要在图像窗口上依次点击两个指定点,然后按下任意键继续下一次操作。同时,你需要确保安装了 Image Processing Toolbox。

使用 ginput 在 MATLAB 中获取两个指定点并裁剪图像

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

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