画像フォルダを読み取​る際に、不要なファイ​ルを名前で指定する方​法

画像ファイルが複数入っているフォルダをimageDatastoreに保存したが、画像ファイル名称の先頭に"._"(ドットアンダーバー)がついているファイルを削除できません。
~ismemberを使用しましたが、「クラス cell の入力 A とクラス cell の入力 B は、一方が文字ベクトルでない限り、文字ベクトルのセル配列でなければなりません。」というエラーが出てしまいます。
ImageDataStoreのFilesは1230×1のcell配列になっており、原因がわかりません。
よろしくお願いします。
imagefile = imageDatastore("imagefolder");
imagefile = imagefile(~ismember({imagefile.Files},{'._'}));

 채택된 답변

Shunichi Kusano
Shunichi Kusano 2023년 1월 17일

1 개 추천

startsWith関数が便利そうです。
filelist = {'1.jpg';'data.jpg';'.temp.jpg';'XXX.jpg'} % 適当にimds.Filesにあたるリストを作成
filelist = 4×1 cell array
{'1.jpg' } {'data.jpg' } {'.temp.jpg'} {'XXX.jpg' }
dotIdx = startsWith(filelist,'.')
dotIdx = 4×1 logical array
0 0 1 0
ロジカル配列が取得できたので、subset関数を使ってdatastoreからドットから始まるファイルを除いたdatastoreを作成できます。
subimds = imageDatastore(imds,~dotIdx);
Unrecognized function or variable 'imds'.

댓글 수: 2

翔
2023년 1월 18일
ありがとうございます。Imds.Fileに保存されている画像の名称の前には、保存先のパスが記載されていたため、教えていただいたstartwith参考にし、contain関数でロジカル配列を取得できました。
Shunichi Kusano
Shunichi Kusano 2023년 1월 18일
すみません、パスのことを忘れていました。ですが、上手くいったようで良かったです。

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

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 ループと条件付きステートメント에 대해 자세히 알아보기

제품

릴리스

R2022b

태그

질문:

翔
2023년 1월 17일

댓글:

2023년 1월 18일

Community Treasure Hunt

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

Start Hunting!