Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing OpenCV检测数字_Image Processing_Opencv_Ocr - Fatal编程技术网

Image processing OpenCV检测数字

Image processing OpenCV检测数字,image-processing,opencv,ocr,Image Processing,Opencv,Ocr,我在iPhone上使用OpenCV,需要检测图像中的数字。我将图像分割成更小的图像,这样每个图像只有一个数字(1-9)。所有数字都是印刷的,不是手写的 使用OpenCV计算数字的最佳方法是什么 更新: 我已经成功地找到了数字并提取了它们。它们看起来像这样: 提取时,它们的大小相同,以此类推。我保存了一堆图像,并将它们放在OCR目录中,在那里它们被分类为数字。比如:ocr/1/100.jpg 101.jpg。。。。和ocr/2/200.jpg 201.jpg 然后我将使用与基本OCR教程中相同

我在iPhone上使用OpenCV,需要检测图像中的数字。我将图像分割成更小的图像,这样每个图像只有一个数字(1-9)。所有数字都是印刷的,不是手写的

使用OpenCV计算数字的最佳方法是什么

更新:

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


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

然后我将使用与基本OCR教程中相同的方法:

不过,我正在为iPhone编程,不能使用C++代码(编译错误等),我没有访问HigGUI。

我尝试使用cvMatchTemplate()匹配一组图像,但效果似乎很差

<我能试试其他的想法吗?< /P> < P>目标C++?
尝试将.m文件重命名为.mm,然后可以在您的iPhone项目中使用C++。 基本上,您的问题只是对特征向量进行分类,这是经过一些预处理步骤后的一组像素强度。您可以使用任何分类器来完成这项任务,比如神经网络,它应该在OpenCV中有一个C实现。您还可以尝试使用支持向量机的C libsvm库


与此相关的问题有很多论文和一个训练数据库。

也许最简单和方便的方法是使用支持向量机作为最大似然算法
以灰度图像作为特征向量

如果打印出数字,那么工作就相当简单,您只需找出一组匹配的功能即可。如果数字是一种字体,您可以使用这种方法:

  • 提取数字
  • 找到边界框
  • 将图像缩小到10x8左右,尝试匹配纵横比
  • 对一个小的训练集这样做,为每个数字取“平均”图像

  • 对于新图像,请按照上面的步骤操作,但最后一步只是每个数字模板的绝对图像差异。然后取差值之和(差值图像中的像素)。最小的是你的号码


以上都是基本的OpenCV操作。

这是一个不错的示例,它是iPhone上的一个演示。希望它对您有用。

您可以从阅读主成分分析(PCA)、Fisher线性判别分析(LDA)和支持向量机(SVM)开始。这些是对OCR非常有用的分类方法,并且有任何语言的库,包括C++、Python、C*等。 事实证明,OpenCV已经在和上包含了优秀的实现。我还没有看到任何用于OCR的OpenCV代码示例,但您可以使用一些修改版本的人脸分类来执行字符分类。OpenCV人脸识别代码的优秀资源是。


这可能对你有所帮助。将代码从Python转换为C++不是一项艰巨的任务,因为OpenCV API的二者都是相同的。

TestSerACT也是一个不错的免费OCR引擎,它可以很方便地用于iPhone,并允许您使用自己的训练图像集:


HOG+SVM(尝试使用内核)

卷积神经网络是迄今为止手写数字的最佳算法。大多数系统(如USPS等)都实现了这些算法。这里很少有文章解释这些算法。

我同意Alex的观点,使用PCA和SVM的一些组合,这两种方法都包含在OpenCVS中,谢谢。不过我以前读过。他在手写数字上做OCR。火车图像是否也适用于打印文本?效果会好得多。使用常规的形状压缩总是比较容易,但是我必须找到打印数字的火车图像,而不是手写数字,对吗?是的-只要用正确的字体、大小等生成一组数字图像就可以了