OpenCV检测号码
image-processing
ocr
opencv
5
0

我在iPhone上使用OpenCV,需要检测图像中的数字。我将图像分割成较小的图像,因此每个图像只有一个数字(1-9)。所有数字均已打印,而非手写。

用OpenCV找出数字的最佳方法是什么?

更新:

我已经成功找到了数字并提取了它们。他们看起来像这样:

http://img198.imageshack.us/img198/5671/101ht.jpg
http://img824.imageshack.us/img824/539/606yu.jpg

提取它们时,它们的大小相同,依此类推。我保存了一堆图像,并将它们放在OCR目录中,然后将它们分类为数字。像:ocr / 1 / 100.jpg 101.jpg ....和ocr / 2 / 200.jpg 201.jpg...。

然后,我将使用与“基本OCR”教程中相同的方法: http : //blog.damiles.com/?p=93

但是,我正在为iPhone编程,不能使用C ++代码(编译等错误),并且我无法访问highgui。

我尝试使用cvMatchTemplate()并匹配一堆图像,但似乎工作得很糟糕...

还有其他可以尝试的想法吗?

参考资料:
Stack Overflow
收藏
评论
共 4 个回答
高赞 时间 活跃

基本上,您的问题只是对特征向量进行分类,特征向量是经过一些预处理步骤后的一组像素强度。您可以将任何分类器用于此任务,例如。神经网络,它应该在OpenCV中具有C实现。您也可以尝试为支持向量机使用C libsvm库。

有一个与该问题相关的好站点 ,其中包含大量论文和培训数据库。

收藏
评论

也许最简单,最方便的方法是使用svm作为ml算法http://opencv.willowgarage.com/documentation/cpp/support_vector_machines.html和灰度图像作为特征向量。

收藏
评论

您可以先阅读一下主成分分析(PCA),费舍尔线性判别分析(LDA)和支持向量机(SVM)。这些是对OCR极为有用的分类方法,并且存在任何语言的库,包括C ++,Python,C#等。

事实证明,OpenCV已经包括PCASVM的出色实现。我还没有看到OCR的任何OpenCV代码示例,但是您可以使用面部分类的某些修改版本来执行字符分类。 该网站是OpenCV面部识别代码的绝佳资源。

收藏
评论

如果打印出数字,则工作非常简单,您只需找出一组不错的功能即可匹配。如果数字是一种字体,则可以采用以下方法:

  • 提取号码
  • 找到边界框
  • 将图像缩小到10x8之类的比例,尝试匹配宽高比
  • 这样做是为了进行少量训练,为每个数字拍摄“平均”图像

  • 对于新图像,请按照上述步骤操作,但是最后一个只是每个编号模板的绝对图像差异。然后取差异之和(差异图像中的像素)。最少的是您的电话号码。

以上都是基本的OpenCV操作。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号