Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matlab中的连通分量ocr(图像处理)_Matlab_Image Processing - Fatal编程技术网

matlab中的连通分量ocr(图像处理)

matlab中的连通分量ocr(图像处理),matlab,image-processing,Matlab,Image Processing,我正在尝试获取图像的连接组件,然后为每个连接的组件运行ocr。这是我的代码- clc image=imread('im.png'); image=imcomplement(image); [imx imy]=size(image); n1=zeros(imx,imy); symb=zeros(imx,imy); lin=zeros(imx,imy); L = bwlabel(image,8) ;%Calculating connected components mx=max(max(L));

我正在尝试获取图像的连接组件,然后为每个连接的组件运行
ocr
。这是我的代码-

clc
image=imread('im.png');
image=imcomplement(image);

[imx imy]=size(image);
n1=zeros(imx,imy);
symb=zeros(imx,imy);
lin=zeros(imx,imy);
L = bwlabel(image,8) ;%Calculating connected components
mx=max(max(L));
for i=1:mx
    [r,c] = find(L==i);
    n1=zeros(imx,imy);
    rc = [r c];
    [sx sy]=size(rc);

    for j=1:sx
        x1=rc(j,1);
        y1=rc(j,2);
        n1(x1,y1)=1;
    end

    figure,imshow(n1);title('components');
    r = ocr(n1,'TextLayout','Word')
    n=strtrim(r.Text); 
end 
这是我的输入图像-

我得到的一个连接组件是-

当我在最后第四行显示组件时,我得到了这个结果。但是在下一行,我没有得到这个组件的ocr的任何结果。所以我的问题是,为什么我没有得到这个组件的
ocr
,而所有其他组件在
ocr
中给出了一些结果

如果在我的第一行代码中使用这个组件作为输入,而不是
im.png
,我会得到一个ocr,为什么会发生这种情况

编辑-如果我使用此组件作为输入,我将获得ocr。

我不知道你到底想要实现什么(从你的帖子上看不是很清楚)。但是如果你想提取化学式中的字母,下面的代码就可以了

I = imread('6oua6.png');
s = regionprops(~I,{'BoundingBox'});
for ii=1:numel(s)
  bb = s(ii).BoundingBox;
  if bb(4)<30 % enforce a limit to discard non-letters
    ocr(I,s(ii).BoundingBox, 'TextLayout', 'Block' )
    rectangle('Position',s(ii).BoundingBox+[-1 -1 2 2 ],'Edgecolor','y')
    pause
  end
end   
I=imread('6oua6.png');
s=regionprops(~I,{'BoundingBox'});
对于ii=1:numel(s)
bb=s(ii).边界框;

如果bb(4)当我使用二值图像(对应于您的“组件”图像)时,我需要对
ocr
执行轻微的形态学操作,以实际检测某些东西(字母I)。否则我什么也得不到。你是说在你的情况下,它可以检测到一个字母而不需要任何操作?我已经编辑了我的问题。实际上,我使用一个外部软件从元件图像中删除白色边框,然后使用它。
ocr
然后检测这个
ocr:光学字符识别。除非您检测的是字符(例如“H”、“L”、“|”和……),否则它对您没有任何用处。