我编写了一个 python 脚本来检测图像中编码的字母。该脚本正在使用openCV模板匹配匹配图像中嵌入的字符/字母。除空格(空格键)字符外,检测工作正常。
Here is a sample image
在 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)
将图像大小调整为新分辨率
[notes]
这使用固定倾斜角度进行扫描,以使其稳健,您需要首先找到倾斜角度,然后沿其扫描。
最后一个间隙也应该是蓝色的我忘记执行if (w>=3)...
如果最后x
被处理,无论i
。源已更新,但图像未更新。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)