Error using imread>get_full_filename

12 次查看(过去 30 天)
I'm running the below code for my algorithm. Everything is working fine but imread() is giving an error in a loop. If I run the command separately it gives the output but in the loop it's showing an error. Could you please help me out?
Trainingpath = 'Destination Foler path';
imagesets = imageDatastore(Trainingpath,'IncludeSubfolders',true,'LabelSource',...
'foldernames');
[traindata,validation] = splitEachLabel(imagesets,0.50,'randomize');
extracted_features = bagOfFeatures(traindata);
Sclassifier = trainImageCategoryClassifier(traindata,extracted_features);
ConfusMatrix = evaluate(Sclassifier,validation);
mean(diag(ConfusMatrix));
imagename = uigetfile({'*.jpg;*.tif;*.png;*.gif','All Image Files';...
'*.*','All Files' });
image = imread(imagename); %?????????????????????
[Label, score] = predict(Sclassifier,image);
prediction = Sclassifier.Labels(Label);
%fprintf(imagename, prediction);
imagename, prediction

采纳的回答

Image Analyst
Image Analyst 2020-10-4
image is the name of a built-in function. Do NOT use it as the name of your variable. Try this:
% Have user browse for a file, from a specified "starting folder."
% For convenience in browsing, set a starting folder from which to browse.
startingFolder = Trainingpath; % or 'C:\wherever';
if ~isfolder(startingFolder)
% If that folder doesn't exist, just start in the current folder.
startingFolder = pwd;
end
% Get the name of the file that the user wants to use.
defaultFileName = fullfile(startingFolder, '*.*');
[baseFileName, folder] = uigetfile(defaultFileName, 'Select a file');
if baseFileName == 0
% User clicked the Cancel button.
break; % Exit loop
end
fullFileName = fullfile(folder, baseFileName);
fprintf('Reading in "%s"\n', fullFileName);
rgbImage = imread(fullFileName);
fprintf('Predicting "%s"\n', fullFileName);
[Label, score] = predict(Sclassifier, rgbImage);
  2 个评论
Ali Nawaz
Ali Nawaz 2020-10-5
I'm really thankful to you for this prompt solution. I've implemented these steps and it's working perfectly fine. One more thing could you please explain that : " How I can confirm the selected image i.e. the image which user selected from the dataset gives me the right answer".
From label and score, Can I predict the selected image is the right one. The algorithm is detecting the right image or not. I'm really confused.
Image Analyst
Image Analyst 2020-10-5
For any training situation, you have 3 sets of images:
  1. training set that you use to train the model. The training set has known, predetermined classes.
  2. validation that you use to test the model you trained. The validation set has known, predetermined classes.
  3. test set. The test set is your actual data. You don't know the answer for these images, and are hoping your algorithm will tell you accurately what the answer is.
Of course for 1 and 2, you KNOW whether your algorithm predicted the right answer or not. For 3 (test set) you don't know for certain, but you have a belief that it got it right at a percentage that you get from running the validation set through your algorithm.
I'm not sure which set your "selected image" falls into, 2 or 3. But the answer is as I described in the last paragraph.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Communications Toolbox 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by