我尝试使用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
答案 0 :(得分:0)
当您使用imread
来阅读图片时,使用imwrite
将其写出来是有意义的,而不是print/eval
(您也应该总是三思而后行eval
1}}在MATLAB中,然后再考虑一下。)
您还可以稍微加快一下这段代码 - 您只想将所有图片的大小调整为第一张图片的大小,这样您就不需要继续阅读图片来衡量它们的大小。使用imfinfo
获取大小,然后读入,调整大小并仅写出B
。