【问题标题】:Global threshold for emgucv in csharpcsharp中emgucv的全局阈值
【发布时间】:2020-10-19 22:05:05
【问题描述】:

好吧,我是 OCR 和 Emgucv 的新手,就这样吧。我有彩色身份证,我想通过 tesseract ocr 处理以获取详细信息。我已将彩色图像转换为灰度,并成功转换为二进制图像并将其传递给 tesseract 并正常工作,尽管我必须从收到的文本中过滤垃圾数据。

现在我的问题是我期待用户提供不同类型的图像,例如对比度、照明条件。我想知道是否有可用的东西来获得全局阈值以获取二进制图像。我已经玩过adaptivethreshold,Otsu,但对我没有用。

我假设图像是像素矩阵,所以他们无论如何都要编写一些适用于任何图像的函数?我不知道应该从哪里开始。

我正在研究 csharp 并将 tesseract 用于 ocr。我使用了以下代码。

double th = CvInvoke.Threshold(source, source2, 0, 255, ThresholdType.Otsu);
CvInvoke.Threshold(source, source, th/2, 255, ThresholdType.Binary);

示例图片: [1]:https://i.stack.imgur.com/JleRx.jpg

请在 csharp 中提出示例以查找全局阈值。

我正在为 OCR 执行以下步骤。

  • 灰度
  • 阈值
  • Tesseract

另外,请让我知道我是在为 OCR 做预期的算法还是我遗漏了什么?另外请建议我应该怎么做才能提高ocr的准确性?任何帮助将不胜感激。

【问题讨论】:

  • +1 你的问题进步了很多,干得好!在您的应用程序中,您有幸知道要搜索的文本的颜色。我建议将图像转换为 HSV,然后对 Hue 进行过滤以仅提取文本。您还知道文本的位置。当我有时间的时候,我会为你做一个例子。
  • 谢谢!我会检查的。

标签: c# opencv ocr tesseract emgucv


【解决方案1】:

您应该使用 Canny 边缘检测。 Emgu CV Canny

它应该有助于您的准确性。它通过局部差异而不是整个图像的亮度/对比度来查找边缘。

【讨论】:

  • 好的。所以我的步骤应该是 Canny 边缘检测器 => 灰度 => 阈值保持 => OCR。我说的对吗?
  • 我会选择灰度 => 精明的边缘 => OCR。测试它是否适合你。取决于您要使用的图像。
  • 好吧,我已经通过灰度 => 精明边缘 => OCR 测试了同一组图像。和灰度 => OCR 。我观察到灰度 => OCR 具有更好的准确性。
猜你喜欢
  • 1970-01-01
  • 2020-10-08
  • 1970-01-01
  • 2012-02-19
  • 1970-01-01
  • 1970-01-01
  • 2012-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多