Filter löschen
Filter löschen

Hi, I am trying to put annotate my object in an image but I am having errors.

2 Ansichten (letzte 30 Tage)
I am trying to put a rectangle on the object that is being classified. I am using insertObjectAnnotation however I am receiving some errors. My code is as followed:
clear
net = googlenet; % Load the neural net
net.Layers
% while true
labelType =''
[file,path]=uigetfile({'*.jpg;*.jpeg;*.bmp;*.png;*.tif'},'Choose an image');
s=[path,file];
I=imread(s);
% I = imread('car1.jpeg');
sz = net.Layers(1).InputSize ;
inputSize = net.Layers(1).InputSize
size(I)
I = imresize(I,inputSize(1:2));
imshow(I)
hold on
movegui(imshow(I),[500,490]);
[label, score] = classify(net, I); % Classify the picture
% label = classify(net, I); % Classify the picture
if (label == 'convertible')
labelType = 'Vehicle Recognised'
elseif (label == 'moped')
labelType = 'Vehicle Recognised'
elseif (label == 'tank')
labelType = 'Vehicle Recognised'
elseif (label == 'sports car')
labelType = 'Vehicle Recognised'
elseif (label == 'moving van')
labelType = 'Vehicle Recognised'
elseif (label == 'trailer truck')
labelType = 'Vehicle Recognised'
elseif (label == 'garbage truck')
labelType = 'Vehicle Recognised'
elseif (label == 'trailer truck')
labelType = 'Vehicle Recognised'
elseif (label == 'minivan')
labelType = 'Vehicle Recognised'
elseif (label == 'beach wagon')
labelType = 'Vehicle Recognised'
elseif (label == 'ambulance')
labelType = 'Vehicle Recognised'
elseif (label =='cab')
labelType = 'Vehicle recognised';
else
labelType = 'No Vehicle Recognised'
end
label_str = cell(3,1);
conf_val = [85.212 98.76 78.342];
for ii=1:3
label_str{ii} = ['Confidence: ' num2str(conf_val(ii),'%0.2f') '%'];
end
position = [23 373 60 66;35 185 77 81;77 107 59 26];
PositionWhereRectangleShouldBe = [100 100 50 50];
I = insertObjectAnnotation(I, 'rectangle', PositionWhereRectangleShouldBe, label_str, score);
figure
imshow(I);
% imshow(I); % Show the picture
% message = strcat(labelType,'-', char(label))
title({char(message),num2str((score),3)}); % Show the label
title(char(message)); % Show the label
I=imread(s);
BW = im2bw(I,0.2);
se = strel('rectangle', [2 20]);
BW_opened = imclose(BW,se);
% figure, imshow(BW_opened,[])
s=regionprops(BW_opened,'Area','BoundingBox');
[hh,ii] = sort([s.Area],'descend');
out = imcrop(I,s(ii(2)).BoundingBox);
figure,imshow(out);
movegui(imshow(out),[300,400]);
out_path = 'C:\Users\Student\Desktop\Vehicle number plate recognition\test images'; % Give path here
fullFileName = fullfile(out_path, 'test_image.jpg');
imwrite(out, fullFileName);
load imgfildata;
picture=imread(fullFileName);
[~,cc]=size(picture);
picture=imresize(picture,[300 500]);
if size(picture,3)==3
picture=rgb2gray(picture);
end
se=strel('rectangle',[5,5]);
a=imerode(picture,se);
figure,imshow(a);
movegui(imshow(a),[800,350]);
b=imdilate(a,se);
threshold = graythresh(picture);
picture =~im2bw(picture,threshold);
percentageBlack = (1-nnz(picture)/numel(picture))*100
picture = bwareaopen(picture,50);
if (percentageBlack < 50)
picture = imcomplement(picture);
end
[L,Ne]=bwlabel(picture);
propied=regionprops(L,'BoundingBox');
hold on
pause(1)
for n=1:size(propied,1)
rectangle('Position',propied(n).BoundingBox,'EdgeColor','g','LineWidth',1)
end
hold off
% figure
final_output=[];
t=[];
for n=1:Ne
[r,c] = find(L==n);
n1=picture(min(r):max(r),min(c):max(c));
n1=imresize(n1,[42,24]);
% imshow(n1)
pause(0.2)
x=[ ];
totalLetters=size(imgfile,2);
for k=1:totalLetters
y=corr2(imgfile{1,k},n1);
x=[x y];
end
t=[t max(x)];
if max(x)>.45
z=find(x==max(x));
out=cell2mat(imgfile(2,z));
final_output=[final_output out];
end
end
file = fopen('number_Plate.txt', 'wt');
fprintf(file,'%s\n',final_output);
fclose(file);
winopen('number_Plate.txt')
drawnow;
%end
but I am having an error of:
_Error using insertObjectAnnotation
Expected a string scalar or character vector for the parameter name.
Error in insertObjectAnnotation
Error in insertObjectAnnotation
Error in insertObjectAnnotation
Error in GoogleNet (line 56) I = insertObjectAnnotation(I, 'rectangle', PositionWhereRectangleShouldBe, label_str, score);_
  1 Kommentar
Florian Morsch
Florian Morsch am 6 Aug. 2018
PositionWhereRactangleShouldBe was an example, not something you should write into your code. You already have a "position" variable in your code, but didnt use it in the first place. Right now the rectangle will be placed at the random location [100 100] with width and heigth [50 50] which i gave as example, you wont mark your object with it.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Image Analyst
Image Analyst am 6 Aug. 2018
Maybe try using rectangle() or line() or plot() instead if you're having trouble with it and don't need it burned into the image.
  2 Kommentare
Syafiqah Daud
Syafiqah Daud am 6 Aug. 2018
Hi, I've tried that but i got an error of:
'Index exceeds array bounds.
Error in GoogleNet (line 52) label_str{ii} = ['Confidence: ' num2str(conf_val(ii),'%0.2f') '%'];'
Image Analyst
Image Analyst am 6 Aug. 2018
Apparently conf_val does not have ii elements in it. What is the value of ii, and what is the length of conf_val when you get the error?

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Computer Vision Toolbox finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by