对于循环没有前进

时间:2014-06-10 22:38:52

标签: matlab resize jpeg

我尝试使用jpg循环读取大量for个文件。但由于某种原因,k指数没有进展。我只是将A作为460x520x3 uint8。我错过了什么吗?

此代码的目标是将所有jpg图像转换为相同的大小。由于我无法通过图像前进,我无法确定我是否正确行事。

nFrames = length(date); % Number of frames.
for k = 1:nFrames-1 % Number of days
    % Set file under consideration
    A = imread(['map_EUS_' datestr(cell2mat(date_O3(k)),'yyyy_mm_dd') '_O3_MDA8.jpg']);

    % Size of existing image A.
    [rowsA, colsA, numberOfColorChannelsA] = size(A);

    % Read in and get size of existing image B (the next image).
    B = imread(['map_EUS_' datestr(cell2mat(date_O3(k+1)),'yyyy_mm_dd') '_O3_MDA8.jpg']);
    [rowsB, colsB, numberOfColorChannelsB] = size(B);

    % Size of B does not match A, so resize B to match A's size.
    B = imresize(B, [rowsA colsA]);

    eval(['print -djpeg map_EUS_' datestr(cell2mat(date_O3(k)),'yyyy_mm_dd') '_O3_MDA8_test.jpg']);
    end
end

1 个答案:

答案 0 :(得分:0)

当您使用imread来阅读图片时,使用imwrite将其写出来是有意义的,而不是print/eval(您也应该总是三思而后行eval 1}}在MATLAB中,然后再考虑一下。)

您还可以稍微加快一下这段代码 - 您只想将所有图片的大小调整为第一张图片的大小,这样您就不需要继续阅读图片来衡量它们的大小。使用imfinfo获取大小,然后读入,调整大小并仅写出B