2017-02-23 116 views
1

我試圖使用 loop在matlab中設置幾個圖像的相同圖形尺寸並保存在png 但是其中一些(通常一個)具有不同的大小。 在下面的代碼中,我嘗試將圖像保存在(48,64)中。 爲什麼有些人物尺寸沒有按照我的指示正確設置?偶爾,在Matlab中沒有正確設置圖形尺寸

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 
+0

嘗試'getframe' –

+0

前添加一個'drawnow'仍然有同樣的問題... – user270700

回答

0

我發現了一些技巧來解決現在的問題。

我說,

fig1 = figure(1); 
drawnow 
for循環的前

,似乎所有的大小現在是相等的。

但還在等待更好的解決辦法...

+0

這是最好的解決辦法! 'drawnow'的全部目的是確保MATLAB在進行下一步操作之前可以有足夠的時間進行繪圖/調整大小。 –