偶尔,在Matlab

时间:2017-02-23 12:27:03

标签: matlab

我尝试在matlab中使用for循环为多个图像设置相同的图形大小并保存在png中 但是其中一些(通常是一个)有不同的大小。 在下面的代码中,我尝试在(48,64)中保存图像。 为什么有些图形尺寸没有像我命令那样正确设置?

nMarker = 5;
mark = ['o', 's', 'd', '^', 'p'];
nSize = 3;
mSize = [9, 18, 27];

nRow = 48;
nCol = 64;
BG = zeros(nRow, nCol);


idxStage = 2;
numAction = 1;
numPositionX =  4;
numPositionY =  4;
xtrain = [1,2,3,4];
ytrain = [1,2,3,4];
xpos = [20, 30, 40, 50];
ypos = [8, 18, 28, 38];

nStepS = 10;
nStepB = 10;
nStep = nStepS + nStepB;

for a = 1
    for x = 1:numPositionX
        for y = 1:numPositionY
            for obj = 1:nMarker
                for s = 1:nSize

                    obj_command = x*1000 + y*100 + obj*10 + s;

                    fig1 = figure(1);
                    imagesc(BG)
                    hold on
                    scatter(xpos(x), ypos(y), mSize(s), mark(obj),     'k', 'filled')
                    axis off
                    set(fig1, 'Position', [500, 500, 64, 48]);
                    set(gca,'position',[0 0 1 1],'units','normalized')

                    F = getframe(gcf);
                    pause(0.05)
                    [X, Map] = frame2im(F);%   
                    tmp_frame = rgb2gray(X);

                    tmp_im_fn = sprintf('tmp/image_seq%04d.png',obj_command);
                    imwrite(tmp_frame, tmp_im_fn)   

                    clf

                end
            end
        end
    end
end 

1 个答案:

答案 0 :(得分:0)

我现在找到了一些解决问题的技巧。

我说,

fig1 = figure(1); 
drawnow

for循环前面,现在似乎所有尺寸都相同。

但还在等待更好的解决方案...