python - 检测倾斜字体中单词之间的空格

标签 python opencv image-processing ocr

我写了一个python脚本来检测图像中编码的字母。该脚本使用openCV的templateMatching来匹配图像中嵌入的字符/字母。除空格(空格键)字符外,检测工作正常。

这是示例图片


是否有一些(简单/直接)方式可以在python中使用(或不使用)openCV来检测单词之间的空格?

最佳答案

您可以沿倾斜的垂直线扫描空白区域

  • 扫描整个图像
  • 计算每行的字体像素
  • 如果未计算像素,则发现间隙(绿线和蓝线)
  • 计数连接的空位线(w)
    如果宽度大于或等于阈值(在您的情况下为3),则发现的差距是单词之间的差距(蓝线)

  • 这是我在C++中完成的方式:
    int x,y,i,w;
    picture pic0,pic1,pic2; // pic0 - original input image,pic1 output, pic2 temp
    
    pic1=pic0;              // copy input image pic0 to pic2
    pic2=pic0;              // copy input image pic0 to pic1
    pic2.rgb2i();           // and convert to grayscale intensity
    
    for (w=0,x=pic2.ys>>1;x<pic2.xs;x++)
        {
        // count pixels per skewed vertical line
        for (i=0,y=0;y<pic2.ys;y++)
         if (pic2.p[y][x-(y>>1)].dd<200) i++;
        if (!i) w++; // increment gap width
        if ((i)||(x==pic2.xs-1))
            {
            if (w>=3)   // if gap bigger then treshold
                {       // draw blue gap lines
                for (i=x,x-=w;x<i;x++)
                 for (y=0;y<pic1.ys;y++)
                  pic1.p[y][x-(y>>1)].dd=0x000000FF;
                }
            w=0;
            continue;
            }
        // if gap found draw green line
        for (y=0;y<pic1.ys;y++)
         pic1.p[y][x-(y>>1)].dd=0x0000FF00;
        }
    
    输出结果如下所示:

    我将自己的图片类用于图片,因此一些成员是:xs,ys是图像大小(以像素为单位)p[y][x].dd是(x,y)位置的像素,为32位整数类型clear(color)清除整个图像resize(xs,ys)将图像调整为新分辨率
    [备注]
    这使用固定的偏斜角进行扫描,以使其坚固耐用,您需要首先找到偏斜角,然后再沿其扫描。
    最后一个间隙也应为蓝色如果处理了最后一个if (w>=3)...而不考虑x,我忘记执行i。源已经更新,但是图像未更新。

    关于python - 检测倾斜字体中单词之间的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31082073/

    相关文章:

    c++ - cvNamedWindow 总是段错误

    python - 如何在 Python 中从此 JSON 中获取 'url' 变量

    python - 单文件 Django、DRF 项目

    opencv - 如何在MFC中显示opencv框架?

    python - 分割后将颜色空间从 RGB 更改为 HSV(OpenCv Python)

    python - 如何对 LAB 图像进行阈值处理

    java - 如何在 Java 中检测另一个图像中的图像?

    java - Java 运行时环境 : OpenCV ellipse detection in Java 检测到 fatal error

    python - 在 HTML 中显示一个 python 文件,保留空格等

    python - 使用 numpy 广播/矢量化从其他数组构建新数组