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

3 ビュー (過去 30 日間)
翔
2023 年 1 月 17 日
コメント済み: Shunichi Kusano 2023 年 1 月 18 日
画像ファイルが複数入っているフォルダを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 日
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 件)

カテゴリ

Help Center および File Exchange大きなファイルとビッグ データ についてさらに検索

タグ

製品


リリース

R2022b

Community Treasure Hunt

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

Start Hunting!