锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / OpenCV / C#深度学习使用OpenCV识别硬币 ,欢迎加入锐英源软件开发技术QQ群:14372360
服务方向
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
音素:138-0381-0136
Q Q:396806883
微信:ryysoft
头条号:软件技术及人才和养生
锐英源软件开发技术QQ群:14372360

锐英源精品原创,禁止全文或局部转载,禁止任何形式的非法使用,侵权必究。锐英源软件对经典开源项目有大量翻译,翻译内容技术层次较高,对初学者有深究意义。有幸浏览到的朋友请关注头条号,可以获取最新更新。English


C#深度学习使用OpenCV识别硬币


背景

原文链接在:https://www.codeproject.com/Articles/5284219/Deep-Learning-in-Csharp-Coin-Detection-Using-OpenC,本文加上了一些代码使用细节图片,致谢原作者。锐英源软件在人工智能机器学习方面经验丰富,欢迎合作。


中文

硬件识别

本系列随附的代码将使用 Keras.NET 在 C# 中实现,在本系列的最后一篇文章中,我们将简要使用 ML.NET。在所有选项中,为什么要使用 Keras.NET?Keras.NET 非常容易学习,因为它基本上是从用 Python 编写的经典 TensorFlow 到 C# 的直接映射。它使不熟悉机器学习的读者更容易理解该示例,而不是在其他替代方案中创建该示例。

硬币检测过程分为三个阶段:

  1. 将图像转换为灰度。颜色增加了检测任务的复杂性,并且在许多情况下,它们不会传达任何无法从图像亮度中获得的相关信息。
  2. 应用高斯模糊。由于硬币通常包括一个内圈,我们应用这种变换来模糊图像。这确保下一步忽略任何内圈,因此我们的算法不会意外地认为它们是单独的硬币。
  3. 应用霍夫变换。这是为了检测圆形。可以在此处找到有关 Hough 变换的更多信息

首先,让我们在 Visual Studio Community 2019 中创建一个 .NET Framework 4.7.2 控制台应用程序。我们将我们的解决方案和项目命名为“CoinRecognitionExample”,并在其中创建一个类为 的检测文件夹CoinDetector。

 

我们将使用 OpenCVSharp,因此我们可以继续从 Visual Studio 中的 Nuget 包管理器安装依赖项。为此,请转到“工具” >“ Nuget 包管理器”

我们可以看到我们需要安装的关于 OpenCVSharp 的依赖项。注:下面是我研究代码时添加内容,非作者原稿。

coin依赖

VS提示要还原,进行还原。

coin依赖还原

 

还原进行中。

coin还原到tensorflow

coin依赖选择

还原后库下载完了,在右侧项目窗口里选择上项目,不选择也可以。

coin引用

这时候看VS引用还是带感叹号,好像是有错,右侧也是红线,其实没问题,可以编译。

编译后执行有错,发现作者少提供文件了。

coin运行

注:回到原稿。

实际的识别在CoinDetector类中实现:

 

在类的构造函数中,我们接收到硬币图像的路径。这个和ImagePreprocessing方法是CoinDetector该类仅有的两个公共实体。所有其他方法都是私有的,并且与上面列出的三个阶段相关。

在该ImageProcessing方法中,我们保存图像的原始 Mat(像素矩阵)对象,并为将要发生的变换制作一个副本。Mat 类和对 Cv2 类的所有调用都来自 OpenCVSharp。每次转换后,我们都会调用new Window以直观地显示转换。

的参数Cv2.HoughCircles取决于您面临的问题,即正在处理的图像。代码中显示的参数是适合我们示例的参数。

为了完成硬币检测示例,我们可以在控制台应用程序项目的 main 方法中添加以下几行并执行。

 

这是我们将用于测试的图像。它包含塞尔维亚第纳尔硬币等: 

 

最终结果将是我们之前看到的图像:。

 

正如我们所看到的,在与霍夫变换相对应的中央和最终窗口中的白色圆圈内检测到硬币。

本系列的第一篇文章到此结束。在接下来的文章中,我们将一个进行预处理的数据集被输入到机器学习模型

 

源代码引导

Nuget 包管理功能非常方便,深度学习底层是用Keras的Sequential,指导特征,训练,评估,然后进行预测。过程简单,但看懂代码要懂些算法。

 

English

The code that accompanies this series will be implemented in C# using Keras.NET, and in the last article of the series we will briefly use ML.NET. Out of all the options, why use Keras.NET? Keras.NET is very easy to learn, since it is basically a direct mapping from the classic TensorFlow written in Python into C#. It makes the example much easier for readers unfamiliar with machine learning to follow than if it were created in one of the other alternatives.

The coin detection process is divided into three stages:

  1. Transform the image to grayscale. Colors add complexity to the detection task, and in many cases they do not convey any relevant information that cannot be obtained from the luminance of the image.
  2. Apply Gaussian Blur. Since coins often include an inner circle, we apply this transformation to blur the image. This ensures that any inner circles are ignored by the next step so our algorithm won’t accidentally think they are a separate coin.
  3. Apply Hough transformation. This is to detect circular forms. More on the Hough transform can be found here.

To get started, let’s create a .NET Framework 4.7.2 Console Application in Visual Studio Community 2019. We’ll name our solution and project "CoinRecognitionExample" and create a Detection folder in it with the class CoinDetector.

友情链接
版权所有 Copyright(c)2004-2021 锐英源软件

公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768

地址:A、郑州市芯互联大厦北楼1803A(文化路优胜北路西北角),B、郑州大学北校区院内