2015-02-07 2 views
1

Я хочу прочитать несколько изображений, которые находятся в папке Scilab. Мой код:Чтение нескольких изображений, находящихся в папке Scilab

I1=dir('G:\SCI\FRAME\*.jpg'); 
n=length(I1); 
disp(n); 
for i=1:n 
    I2=strcat('G:\SCI\FRAME\',I1(i).name); 
    I=imread(I2); 
    figure(),imshow(I); 
end 

Но это не работает. Он показывает ошибку «недопустимый индекс».

ответ

1

Есть две ошибки исправить:

1.) length дает число символов (= длина) строки, но вы хотите, чтобы получить количество элементов (= размер) в вектор (имена файлов), поэтому вы должны использовать size.

2.) I1 - структура списка, возвращаемая dir. Вы можете извлечь его содержимое оператором ., например. I1.name, I1.date, I1.bytes, I1.isdir. Введите их в консоль, чтобы увидеть содержимое! Поскольку I1.name уже содержит полный путь + имя файла + расширение как строковый вектор, вам не нужно его строить с помощью strcat. В любом случае, если вы хотите «склеить» 2 строки вместе, проще использовать +, например. S="fisrst_string"+"second_string". Таким образом, пересмотренный код:

I1=dir('G:\SCI\FRAME\*.jpg'); 
n=size(I1.name,"*"); //size of the I1.name vector 
disp(n); 
for i=1:n 
    I=imread(I1.name(i)); //I1.name is a string vector 
    figure(); 
    imshow(I); 
end 
+0

Это работает.Спасибо! – khushbu

Смежные вопросы