Imread одиночный файл изображения с использованием подстановочного знака MatLab

У меня есть куча изображений в папке, и они проиндексированы. Например:

01_Cat.jpg 
02_Dog.jpg 

и так далее. Теперь я хочу прочитать изображение, но я не хочу указывать полное имя изображения. Можно ли прочитать изображение с помощью подстановочных знаков, как показано ниже

A = imread('01_*.jpg');
B = imread('02_*.jpg');

Это не работает. MatLab воспринимает * буквально.


person Nagabhushan S N    schedule 13.08.2018    source источник


Ответы (1)


Я считаю, что использование подстановочных знаков не поддерживается в imread, однако вы можете обойти это, используя функцию dir следующим образом:

A = imread(getfield(dir('01_*.jpg'),'name'));
B = imread(getfield(dir('02_*.jpg'),'name'));
person Paolo    schedule 13.08.2018
comment
Или напрямую создайте список всех jpg. с помощью dir('.jpg'), а затем перебрать результаты: files = dir('.jpg'); для f = файлов img = imread (f.name); % сделать что-то конец - person Christian Heigele; 13.08.2018
comment
Да, это альтернатива, хотя она должна быть dir('*.jpg'), а не dir('.jpg'). Я просто хотел показать OP, как он может использовать свой синтаксис для достижения желаемого результата. - person Paolo; 13.08.2018
comment
Работал! У меня есть еще одна проблема. Файл изображения находится не в текущем каталоге. Я даю путь к функции dir. Но функция getfield возвращает только имя изображения. Итак, в настоящее время я добавляю путь к значению, возвращаемому getfield. Есть ли прямой способ получить полный путь? - person Nagabhushan S N; 13.08.2018
comment
Вы можете использовать fullfile, сочетая getfield с folder и getfield с name. - person Paolo; 13.08.2018
comment
Спасибо! Я использовал dir.('folder') и dir.('name') вместо getfield(dir, 'name'). MatLab предложил это. - person Nagabhushan S N; 13.08.2018