Borrar filtros
Borrar filtros

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

2 visualizaciones (últimos 30 días)
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 comentario
Florian Morsch
Florian Morsch el 6 de Ag. de 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.

Iniciar sesión para comentar.

Respuestas (1)

Image Analyst
Image Analyst el 6 de Ag. de 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 comentarios
Syafiqah Daud
Syafiqah Daud el 6 de Ag. de 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 el 6 de Ag. de 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?

Iniciar sesión para comentar.

Categorías

Más información sobre Computer Vision Toolbox en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by