我正在使用OpenCV开发一个ANPR系统,并在一些文章中看到了一种进行字符分割的方法。我们的想法是制作一个图表,显示整个图像的颜色浓度。
我该怎么做?
这是我的图像:
我需要检测黑色区域的位置,如上所示,以识别每个字符。
我尝试逐像素地添加这些值,但我在Android上这样做,这个时间是不可接受的。
答案 0 :(得分:7)
好的,一个月之后,但我为此写了一些代码(在python中);)
(假设你刚好在图像密度直方图之后)
import cv
im2 = cv.LoadImage('ph05l.jpg')
width, height = cv.GetSize(im2)
hist = []
column_width = 1 # this allows you to speed up the result,
# at the expense of horizontal resolution. (higher is faster)
for x in xrange(width / column_width):
column = cv.GetSubRect(im2, (x * column_width, 0, column_width, height))
hist.append(sum(cv.Sum(column)) / 3)
为了加快速度,你需要改变你的图像文件,只需改变采样的bin宽度(脚本中的column_width
),显然你会失去一些分辨率(如你所知)可以在下图中看到。)
在图片中,我使用您的文件显示结果(图hist
),使用{1}}的1,10和100.他们以0.11,0.02和0.1运行分别为0.01秒。
我也在PIL写了它,但它的运行速度慢了5到10倍。
答案 1 :(得分:-1)
查看OpenALPR(http://www.openalpr.com)。它以相同的方式进行字符分割(使用直方图)。它在桌面上速度相当快,但我不确定它在Android上的速度有多快。