2015-06-26 62 views
0

我编写了一个python脚本,用于检测图像中编码的字母。该脚本使用openCV的模板匹配来匹配嵌入图像中的字符/字母。除空格(空格键)字符外,检测工作正常。检测倾斜字体中单词之间的空间(酒吧)

下面是一个示例图像
enter image description here

有一些(易/直接)的方式来检测使用单词之间的空格(或不使用)在python OpenCV的?

回答

2

可以为空的空间扫描沿倾斜垂直线

  1. 扫描整个图像
  2. 每行
  3. 计数字体象素,如果没有计算,则像素间隙实测值(绿色和蓝线)
  4. 计数接合间隙线(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; 
    } 

这是输出的样子:

example

我用自己的图片类的图像,以便一些成员是:
xs,ys是在像素的图像的大小
p[y][x].dd是在(X,Y)的位置32位整数类型像素
clear(color)清除整个图像
resize(xs,ys)图像大小调整到新的分辨率

[注意事项]

这使用固定倾斜角度进行扫描以使其稳定,您需要首先找到倾斜角度,然后沿着它进行扫描。

最后的差距应该也是蓝色我忘记执行if (w>=3)...如果最后x处理不管i。源已经更新,但图像不是。

相关问题