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

조회 수: 32 (최근 30일)
Fer
Fer 2015년 10월 4일
답변: hossam mahmoud 2021년 2월 7일
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