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

2 次查看(过去 30 天)
翔
2023-1-17
画像ファイルが複数入っているフォルダを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 CenterFile Exchange 中查找有关 ループと条件付きステートメント 的更多信息

标签

产品


版本

R2022b

Community Treasure Hunt

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

Start Hunting!