Montage関数を​使って,任意の枚数の​連続画像を一つにまと​めることができません​.

プログラミング初心者です.
以下のコードで,選択したフォルダから連続番号の任意の枚数(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
Atsushi Ueno 2021년 11월 18일
問題ありません。montage関数による画像が並んで表示されます。
エラー表示などはありましたか?
Yoko
Yoko 2021년 11월 18일
ご回答ありがとうございます.
カキのエラーが表示されています.
*******************************
エラー: montage
1 番目の入力引数 I, BW, or RGB は次のタイプのいずれかにする必要があります:
uint8, double, uint16, logical, single, int16
指定されたタイプは matlab.io.datastore.ImageDatastore でした。
エラー: montage>parse_inputs (line 249)
validateattributes(varargin{1}, ...
エラー: montage (line 114)
[I,cmap,mSize,indices,displayRange,parent] = parse_inputs(varargin{:});
エラー: Montage (line 29)
montage(imds)
**********************************
Atsushi Ueno
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')
ans = logical
1
Atsushi Ueno
Atsushi Ueno 2021년 11월 18일
montage関数について上記コメントは間違いないですが、適用されたのがR2018aでした。
従ってR2017b以前の MATLAB 及び Image Processing Toolbox ではイメージ データストアの入力を受け付けません。

댓글을 달려면 로그인하십시오.

 채택된 답변

Atsushi Ueno
Atsushi Ueno 2021년 11월 18일

0 개 추천

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に変更しました

댓글 수: 1

Yoko
Yoko 2021년 11월 18일
おっしゃる通りでした!
MATLAB R2017bを使っております.
教えて頂いた変更で上手くいきました.
ありがとうございます!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

제품

릴리스

R2017b

질문:

2021년 11월 18일

댓글:

2021년 11월 18일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!