The reshape function used in the code below
9 ビュー (過去 30 日間)
古いコメントを表示
file = 'foreman.cif';
nFrame = 10;
[fid,message]= fopen(file,'rb');
nRow = 288;
nColumn = 352;
img_y = uint8(fread(fid, nRow * nColumn, 'uchar'));
for k = 1:nFrame
ImY = reshape(img_y(:,:,k), nRow, nColumn);
ImY = ImY';
imshow(ImY);
pause(0.5)
end
fclose(fid);
disp('OK');
Error is
Error using reshape
To RESHAPE the number of elements must not change.
Error in cifTry (line 31)
img_y = reshape(img_y, nColumn, nRow);
0 件のコメント
回答 (2 件)
Star Strider
2015 年 2 月 9 日
Try:
ImY = reshape(squeeze(img_y(:,:,k)), nRow, nColumn);
or:
ImY = reshape(img_y(:,:,k), nRow, nColumn, []);
depending on what you want to do. No promises, since I can’t run your code.
2 件のコメント
Star Strider
2015 年 2 月 9 日
I don’t have a .cif image to experiment with, and I do not have yours, so I can only suggest untested possibilities.
I would follow Roger’s suggestion, and be certain that ‘nRow’ and ‘nColumn’ are actually the dimensions of your array. The mismatch between them and the dimensions of your data would certainly throw the error you are seeing.
Roger Stafford
2015 年 2 月 9 日
I would advise you to place the line
display(size(img_y))
immediately after the line
img_y = uint8(fread(fid, nRow * nColumn, 'uchar'));
to see if it has the size of dimensions you apparently expect it to have. Your error message suggests that it does not, and if so, you should make the appropriate changes in your code.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Entering Commands についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!