OpenCV色彩浓度直方图

时间:2012-02-19 17:15:11

标签: opencv computer-vision ocr anpr

我正在使用OpenCV开发一个ANPR系统,并在一些文章中看到了一种进行字符分割的方法。我们的想法是制作一个图表,显示整个图像的颜色浓度。

我该怎么做?

enter image description here

这是我的图像:

enter image description here

我需要检测黑色区域的位置,如上所示,以识别每个字符。

我尝试逐像素地添加这些值,但我在Android上这样做,这个时间是不可接受的。

2 个答案:

答案 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倍。

character density histograms

答案 1 :(得分:-1)

查看OpenALPR(http://www.openalpr.com)。它以相同的方式进行字符分割(使用直方图)。它在桌面上速度相当快,但我不确定它在Android上的速度有多快。