2016-04-17 16 views
1

Ich habe ein Problem bei der Ausführung dieses Codes. Ich möchte von den Bildern Text extrahieren, dies ist mein CodeText Extraktion aus natürlichen Bildern

i = imread('handicapped.jpg'); 
i1 = rgb2gray(i); 
imshow(i1); 

i2 = edge(i1,'canny',0.3); 
imshow(i2); 

se = strel('square',2); 
i3 = imdilate(i2,se); 
imshow(i3); 

i4 = imfill(i3,'holes'); 
imshow(i4); 

[Ilabel num] = bwlabel(i4); 
disp(num); 
Iprops = regionprops(Ilabel); 
Ibox = [Iprops.BoundingBox]; 
Ibox = reshape(Ibox,[4 92]); 
imshow(i); 

hold on; 
for cnt = 1:92 
rectangle('position',Ibox(:,cnt),'edgecolor','r'); 
end 

Ich habe einen Fehler in Zeile 19

Error using reshape 
To RESHAPE the number of elements must not change. 

Error in test11 (line 19) 
Ibox = reshape(Ibox,[4 92]); 

kann mir jemand helfen ???

+0

starten durch das Verständnis der Fehler zu ändern. Warum wird bei diesen Dimensionen umgeformt und warum? – nkjt

Antwort

2

Sie machen die Annahme, dass immer 92 Bounding-Boxen gefunden werden. Sie erhalten einen Fehler, weil dies offensichtlich nicht immer der Fall ist. Anstatt die zweite Dimension zu reshape, you can pass an empty array zu spezifizieren, so dass reshape die entsprechenden Dimensionen herausfinden.

%// 4 Rows with numel(Ibox)/4 columns 
Ibox = reshape(Ibox, 4, []); 

Ihre for-Schleife macht die gleiche Annahme von 92, so dass Sie das auch

for cnt = 1:size(Ibox, 2) 
    rectangle('position',Ibox(:,cnt),'edgecolor','r'); 
end 
+0

Vielen Dank, dass ich diesen Ansatz für die Texterkennung aus Bildern befolge, aber es funktioniert nicht gut bitte hilf mir, einen guten Ansatz vorzuschlagen, ich warte auf deine Antwort :) –

+0

@NomanMalik Warum nicht einfach MATLABs 'ocr' dafür verwenden ? – Suever

+0

Weil ich jede fortschrittliche Technik nutzen möchte, die mir bei meiner Diplomarbeit hilft. Ich mache MS. Aber wenn du dir ocr gut dafür aussuchst, werde ich mit ocr gehen. –