Montage関数を使って,任意の枚数の連続画像を一つにまとめることができません.
16 次查看(过去 30 天)
显示 更早的评论
プログラミング初心者です.
以下のコードで,選択したフォルダから連続番号の任意の枚数(8~20枚程度)のjpg形式画像を読み込み,一つの画像としてまとめたいと思っていますが,上手く行きません.
どこに問題があるのでしょうか..教えて頂けると大変助かります.
fileFolder = uigetdir(); % Open the selected folder
imds = imageDatastore(fullfile(fileFolder,'AT*')); % Select the all images in this folder
montage(imds)
指定するフォルダ(例 D:\Document\MATLAB\AT)の中には"AT01, AT02, AT03...."とラベリングされたjpg形式の画像ファイルが複数入っています.
どうぞよろしくお願いいたします.
4 个评论
Atsushi Ueno
2021-11-18
おかしいですね。montage関数はイメージ データストアの入力も受け付けます。下記はmontage関数の一部抜粋です。if文の2番目(elseif)で引っ掛かるべき所、3番目(else)まで行ってますね。
I = varargin{1};
if iscell(I) || isstring(I)
nframes = numel(I);
elseif isa(I,'matlab.io.datastore.ImageDatastore')
nframes = numel(I.Files);
else
validateattributes(I, ...
{'uint8' 'double' 'uint16' 'logical' 'single' 'int16'}, {}, ...
nfukebane, 'I, BW, or RGB', 1);
条件に当てはまる画像が指定フォルダに有ればイメージ データストアが出力されますし、無ければエラーの為イメージ データストアが出力される前に止まってしまうはずなのですが...
fileFolder = pwd; % uigetdir(); % Open the selected folder
imds = imageDatastore(fullfile(fileFolder)); % Select the all images in this folder
isa(imds,'matlab.io.datastore.ImageDatastore')
Atsushi Ueno
2021-11-18
montage関数について上記コメントは間違いないですが、適用されたのがR2018aでした。
従ってR2017b以前の MATLAB 及び Image Processing Toolbox ではイメージ データストアの入力を受け付けません。
采纳的回答
Atsushi Ueno
2021-11-18
R2017b以前の MATLAB 及び Image Processing Toolbox ではmontage関数がイメージ データストアの入力を受け付けないので、イメージデータストアの代わりに、その中のファイル名(セル配列)をmontage関数に入力する事で問題が解消します。
fileFolder = uigetdir(); % Open the selected folder
imds = imageDatastore(fullfile(fileFolder,'AT*')); % Select the all images in this folder
montage(imds.Files); % imdsからimds.Filesに変更しました
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Image Processing Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!