2016-09-25 7 views
1
columnNames = string({'Aricept','Donepezil','Dementia','tpicerA','ROOMS','BRICK'}); 

stary=char(columnNames); 
% Load an image 
% I = imread('product_aricept_10mg.jpg'); 
% cd('E:\saba_study\7th sem\New folder\task3\*.jpg'); 
[mat, dirc] = uigetfile('*.jpg', 'Select a file'); 
I= imread(fullfile(dirc, mat)); 
% Perform OCR 
roi = [360 118 384 560]; 
results = ocr(I); 
% disp(results); 
disp(results.Text); 

% Display one of the recognized words 
% for i=1:results 

word = results.Words{3}; 
disp(word); 
com=char(word); 
% end 
% 
% Location of the word in I 
wordBBox = results.WordBoundingBoxes(3,:); 
figure; 
Iname = insertObjectAnnotation(I, 'rectangle', wordBBox, word); 
img=imcrop(Iname); 
imshow(img); 



x=validatestring(com,columnNames); 
if(x==stary) 
disp(x); 
else 
    disp('not recognized'); 
end 

% Find characters with low confidence 
lowConfidenceIdx = results.CharacterConfidences < 0.6; 

% Get the bounding box locations of the low confidence characters 
lowConfBBoxes = results.CharacterBoundingBoxes(lowConfidenceIdx, :); 

% Get confidence values 
lowConfVal = results.CharacterConfidences(lowConfidenceIdx); 

% Annotate image with character confidences 
str  = sprintf('confidence = %f', lowConfVal); 
Ilowconf = insertObjectAnnotation(I, 'rectangle', lowConfBBoxes, str); 

figure; 
imshow(Ilowconf); 
title('you need to take this medicine 3 times a day');` 

Я хочу, чтобы при выборе любого изображения и при использовании функции ocr значение, возвращаемое этим, сравнивается с помощью строкового значения, используя свойство validate, чтобы проверить, соответствует значению, тогда отображаемое значение else возвращает не соответствующее значение. Пожалуйста, помогите мне, как я могу справиться, если условиеЯ пытаюсь распознать текст через функцию oCR. но это дает мне ошибку на первой строке, которая не может преобразовать из ячейки в массив

ответ

0

Это потому, что

names={'Aricept','Donepezil','Dementia','tpicerA','ROOMS','BRICK'} 

Это уже клетка, и почти ни один оператор в MATLAB не может взять клетку в качестве входных данных. Однако

string(names{1}) 

является допустимым ввода, так как имена {1} содержит строку.

+0

поэтому как мне изменить свой код –

+0

да, вам, вероятно, придется добавить в код некоторые циклы. каждый раз, когда вам нужна одна из строк внутри ячейки, назовите ее с помощью stary {i} – Victor