我已经编写了这个用于检测图像文本的matlab代码(如下所示)。此代码检测图像中的文本,但现在我想为图像中每个检测到的字母创建一个输出图像。请告诉我该怎么做?
代码:
i = imread('text.png');
i1 = 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
答案 0 :(得分:1)
您可能希望查看regionprops
的'Image'
属性:
Ipops = regionprops(Ilabel, 'Image');
PS,
在调用regionprops
时,最好明确定义所请求的属性,否则您将浪费资源来计算所有属性 - 包括您甚至不需要的属性。
例如,您的代码应该看起来像
Iprops = regionprops(Ilabel, 'BoundingBox');
Ibox = vertcat(Iprops.BoundingBox); % no need for "reshape" here...