Reading an image sequence: "Error: The filename or url argument must be a string."

8 次查看(过去 30 天)
Hello, I'm trying to work over a sequence of images, I have used dir to obtain a list of all the files:
dirData = dir([dirName, '\*.png']); %# Get the data for the current directory
dirIndex = [dirData.isdir]; %# Find the index for directories
fileList = {dirData(~dirIndex).name}'; %'# Get a list of the files
if ~isempty(fileList)
imgList = cellfun(@(x) fullfile(dirName,x),... %# Prepend path to files
fileList,'UniformOutput',false);
end
imgst=cellstr(imgList);
I tried looping over the list but I got an error so I then tried imread over only one member of the array: imread(imgst(1))
and again I got the error saying argument wasn't a string.
I thought cellstr would convert the members in the list to strings? If they're not strings what are they? how can I reference each file in my list so I can work with them over a loop? I know similar questions have been asked before but I didn't find an answer for an error like mine.
Thanks a lot
  1 个评论
Walter Roberson
Walter Roberson 2020-7-8
The line
imgList = cellfun(@(x) fullfile(dirName,x),... %# Prepend path to files
fileList,'UniformOutput',false);
can be replaced with
imgList = fullfile(dirName, fileList);
fullfile() is happy to take a cell array of character vectors as the second argument.

请先登录,再进行评论。

回答(3 个)

Fer
Fer 2015-10-4
Okay, so I found the answer to my own question. Not deleting in case someone has the same problem. The only thing I had to so was calling
imread(imgst{1})
so basically just using {} instead of ().
I had not used cells before so, my bad.
  2 个评论
Nathaniel Conrad
Nathaniel Conrad 2020-7-8
Thank you for pointing this out! I was using a cell data container to hold a string character for a file path for the first time and having the same issue, too.
I do find it odd that if a cell only has one element in it, then you must index the container variable with {1} in order to extract the string that is labeling the relevant image file path.
For example, if you store the string in a structure array, then you don't need to index the structure array data container variable at all. Weird!

请先登录,再进行评论。


Tess Meier
Tess Meier 2019-1-22
Yes thank you!!!!!!

hossam mahmoud
hossam mahmoud 2021-2-7
I found the solution
just try this
s=convertStringsToChars(s);

类别

Help CenterFile Exchange 中查找有关 File Operations 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by