Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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

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
C# 我应该使用什么来识别单间隔数字?_C#_Opencv_Machine Learning_Computer Vision_Aforge - Fatal编程技术网

C# 我应该使用什么来识别单间隔数字?

C# 我应该使用什么来识别单间隔数字?,c#,opencv,machine-learning,computer-vision,aforge,C#,Opencv,Machine Learning,Computer Vision,Aforge,我必须从视频流中识别图像中的数字,还有其他一些事情,这将使识别更容易: 1) 它是固定字体6x8,所有符号宽度相等 2) 我知道数字的确切位置,它们总是矩形的,没有旋转/缩放/缩放,但可能会因为空气传输故障而出现一些失真。 3) 只有数字和。 4) 数字背景为半黑色(50%不透明) 我尝试过tesseract v2和v3,但.NET包装器并不完美,识别错误非常大,即使我使用自定义字体进行了培训,据我所知,这是因为分辨率太小 我自己做了一个非常简单的算法,将图像变成黑白,并计算原始字体图像和流中图

我必须从视频流中识别图像中的数字,还有其他一些事情,这将使识别更容易:
1) 它是固定字体6x8,所有符号宽度相等
2) 我知道数字的确切位置,它们总是矩形的,没有旋转/缩放/缩放,但可能会因为空气传输故障而出现一些失真。
3) 只有数字和。
4) 数字背景为半黑色(50%不透明)

我尝试过tesseract v2和v3,但.NET包装器并不完美,识别错误非常大,即使我使用自定义字体进行了培训,据我所知,这是因为分辨率太小

我自己做了一个非常简单的算法,将图像变成黑白,并计算原始字体图像和流中图像之间的匹配像素,它的性能比tesseract好,但我认为更复杂的算法会更好

我曾尝试使用ActivationNetwork和BackPropagationLearning来训练一个RGE,但它无法收敛(本文的第一部分,只要我不需要缩放和几种字体,因为我理解本文中的代码是针对旧版本的AForge),不好的是,这个项目不再受支持,据我所知,论坛已经关闭,谷歌群组也关闭了

我知道有一个到.NET的OpenCV端口,据我所知,它有不同于Forge的网络方法,所以questiton是哪种方法最适合


那么,是否有任何.NET框架可以在这方面帮助我,如果它支持多个神经网络实现,那么哪种实现最适合我?

尝试查看和。这两个项目都解释了OCR是如何工作的,并向您展示了如何在C#和.NET中实现它。

请尝试查看和。这两个项目都解释了OCR的工作原理,并向您展示了如何在C#和.NET中实现它。

对于固定放大率的固定大小字体,您可能可以使用基于模板匹配的不太复杂的OCR方法。有关如何使用OpenCV进行模板匹配的示例,请参见(不是.NET,但希望足以让您开始)。基本思想是为每个数字创建一个模板,然后尝试在目标位置匹配所有模板,选择匹配分数最高的模板。因为你知道数字的位置,你可以在一个很小的区域内搜索每个数字。有关模板匹配背后的理论的更多信息,请参阅关于互相关


这实际上是简化OCR应用程序的基础(通常用于识别特殊OCR字体,如用于在硅片上打印序列号的半标准字体)。生产级算法还可以支持缩放、旋转和平移公差,但基本技术基本相同。

对于固定放大率的固定大小字体,您可能可以使用基于模板匹配的不太复杂的OCR方法。有关如何使用OpenCV进行模板匹配的示例,请参见(不是.NET,但希望足以让您开始)。基本思想是为每个数字创建一个模板,然后尝试在目标位置匹配所有模板,选择匹配分数最高的模板。因为你知道数字的位置,你可以在一个很小的区域内搜索每个数字。有关模板匹配背后的理论的更多信息,请参阅关于互相关


这实际上是简化OCR应用程序的基础(通常用于识别特殊OCR字体,如用于在硅片上打印序列号的半标准字体)。生产级算法还可以支持缩放、旋转和平移公差,但是基本的技术几乎是一样的。

如果您不是非常着急,我建议您首先寻找一种解决问题的方法。我在这方面有很好的经验。使用WEKA,您可以非常快速地测试一系列算法。
一旦你找到了解决问题的算法,你可以将它移植到.NET,构建一个包装器,寻找一个实现,或者(如果这是一个简单的算法)在.NET中重建它。

如果你不是非常匆忙,我建议你先寻找一个解决问题的方法。我在这方面有很好的经验。使用WEKA,您可以非常快速地测试一系列算法。
一旦你找到了解决问题的算法,你可以将它移植到.NET,构建一个包装器,寻找一个实现,或者(如果这是一个简单的算法)在.NET中重新构建它。

@Giedrius--对不起,我没有捕捉到第二个链接。虽然使用MicrosoftOffice2007OCR可以工作,但如果您的计算机上有MicrosoftOffice。@Giedrius--对不起,我没有找到第二个链接。虽然这在使用Microsoft Office 2007 OCR时有效,但如果您的计算机上安装了Microsoft Office。我非常同意,因为您处于这样一个受控环境中(固定大小、已知位置等),模板匹配就足够了,而无需进入真正的OCR。由于我得到了合适算法的名称,我发现它在,所以我使用了它,它做得很好,非常感谢。我非常同意,因为你在这样一个受控的环境中(固定大小、已知位置等),模板匹配不需要进入真正的OCR就足够了。当我得到合适算法的名称时,我发现它是在,所以我使用了它,它做得很好,非常感谢。使用Tesseract的一个尝试是将图像放大到如果您的图像来自300dpi扫描的书籍图像,您将获得的图像。通过将12像素宽的中文图像缩放到100像素宽,我让Tesseract在12像素宽的中文图像上工作。使用Tesseract的一个尝试是将您的图像放大到如果您的图像来自300dpi扫描的书籍图像,您将得到的图像。我能够让Tesseract在12像素宽的中文上工作,方法是将其缩放到100像素宽