clear all; close all; clc;
A = im2double(imread('cameraman.jpg'));
figure(1)
imshow(A)
C = chunking(A,400,400) % separates picture;
[m n] = size(C);
k = 1;
figure(1)
for i = 1:m
for j = 1:n
subplot(m,n,k)
imshow(C{i,j})
axis off;
k = k + 1;
end
end
所以在上面的代码中,我试图将图片分成400x400像素块。由于图像不是400x400的倍数,因此边框和右下角会有不相等的部分(仍然是方形图像)。但是,当我使用子图时,它会将最后一个块的大小调整为相同的大小。我尝试使用get和set position但是它给出了每个子图的宽度和高度是一样的吗?![在此输入图像描述] [1]
答案 0 :(得分:0)
如果要显示的像素少于400像素,则需要调整轴的大小。您应该将句柄存储到每个子图,然后在需要更小的情况下调整它的大小。
您对子剧情的调用应如下所示:
h = subplot(m,n,k);
num_rows = size(C{i,j}, 1);
num_cols = size(C{i,j}, 2);
set(h, 'units', 'pixels')
old_axes_pos = get(h, 'position');
new_axes_pos = old_axes_pos;
if num_cols < 400
new_axes_pos(3) = num_cols; % Make this axes narrower
end
% If the figure cannot be full height
if num_rows < 400
new_axes_pos(4) = num_rows; % Make this axes shorter
new_axes_pos(2) = old_axes_pos(2) + (400 - num_rows); % Move the bottom up
end
set(h, 'position', new_axes_pos) % Change the size of the figure