Problem with using while

1 回表示 (過去 30 日間)
Abdussalam Elhanashi
Abdussalam Elhanashi 2019 年 10 月 31 日
回答済み: James Heselden 2019 年 10 月 31 日
Hi Guys
have a problem with using while and give me an error when i run matlab for the code attached named Evaluationthedetector
Kindly looking for your assistance
Regards
load('gTruth.mat')
smokedetection = selectLabels(gTruth,'cat');
if ~isfolder(fullfile('EvaluationData'))
mkdir EvaluationData
addpath('EvaluationData');
evaluationData = objectDetectorTrainingData(gTruth,...
'SamplingFactor',10,'WriteLocation','EvaluationData');
end
imds = imageDatastore(fullfile('EvaluationData'));
numImages = height(evaluationData);
result(numImages,:) = struct('Boxes',[],'Scores',[]);
while i = 1:numImages
% Read Image
I = readimage(imds,numImages);
% Detect the object of interest
[bboxes, scores] = detect(detector,I,'MiniBatchSize', 32);
T = 0.54; % Define threshold here
idx = scores >= T;
% if there are 2 or more objects detected, show them
if nnz(idx) >= 2
% Retrieve those scores that surpassed the threshold
s = scores(idx);
% Do the same for the labels as well
bboxes = bboxes(idx, :); % This logic doesn't change
% Store result
result(i).Boxes = bboxes;
result(i).Scores = scores;
end
end
% Convert structure to table
results = struct2table(result);
Error: File: Evaluationthedetector.m Line: 14 Column: 9
Incorrect use of '=' operator. To assign a value to a variable, use '='. To compare values for equality, use
'=='.

採用された回答

James Heselden
James Heselden 2019 年 10 月 31 日
You are using a while loop where you should be using a for loop.
% Swap out
while i = 1:numImages
...
end
% to
for i = 1:numImages
...
end
Regards
James

その他の回答 (1 件)

Sulaymon Eshkabilov
Sulaymon Eshkabilov 2019 年 10 月 31 日
while .. end is not used correcly, use for ... end instead
for i = 1:numImages
% Read Image
I = readimage(imds,numImages);
% Detect the object of interest
[bboxes, scores] = detect(detector,I,'MiniBatchSize', 32);
T = 0.54; % Define threshold here
idx = scores >= T;
% if there are 2 or more objects detected, show them
if nnz(idx) >= 2
% Retrieve those scores that surpassed the threshold
s = scores(idx);
% Do the same for the labels as well
bboxes = bboxes(idx, :); % This logic doesn't change
% Store result
result(i).Boxes = bboxes;
result(i).Scores = scores;
end
end
% Convert structure to table

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by