欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c# 使用OpenCV識別硬幣

 更新時間:2020年12月23日 08:33:19   作者:碼農譯站  
這篇文章主要介紹了c# 使用OpenCV識別硬幣的方法,幫助大家更好的利用c#進行深度學習,感興趣的朋友可以了解下

在本系列文章中,我們將使用深度神經網絡(DNN)來執(zhí)行硬幣識別。具體來說,我們將訓練一個DNN識別圖像中的硬幣。

在本文中,我們將描述一個OpenCV應用程序,它將檢測圖像中的硬幣。硬幣檢測是硬幣完整識別之前的一個常見階段。它包括從給定圖像中檢測和提取硬幣。

本系列附帶的代碼將使用Keras在C#中實現(xiàn)。在本系列的最后一篇文章中,我們將簡要地使用ML.NET。在眾多選擇中,為什么要使用Keras.NET呢?Keras.NET 非常容易學習,因為它基本上是從Python編寫的經典TensorFlow到C#的直接映射。對于不熟悉機器學習的讀者來說,這比用其他方法創(chuàng)建示例要容易得多。

硬幣檢測過程分為三個階段:

  1. 轉換圖像到灰度。顏色增加了檢測任務的復雜性,而且在很多情況下,它們不能傳遞任何可以從圖像亮度中獲取的相關信息。
  2. 應用高斯模糊。因為硬幣通常包含一個內圓,我們應用這個變換來模糊圖像。這確保了任何內圓被下一步中的操作忽略,所以我們的算法不會意外地認為它們是一個單獨的硬幣。
  3. 應用霍夫變換。這是為了檢測圓形。

首先,讓我們在Visual Studio Community 2019中創(chuàng)建一個.net Framework 4.7.2控制臺應用程序。我們將把我們的解決方案和項目命名為“CoinRecognitionExample”,并在其中創(chuàng)建一個Detection文件夾,創(chuàng)建一個CoinDetector類。

我們將使用OpenCVSharp,所以我們可以繼續(xù)在Visual Studio中從Nuget包管理器安裝依賴項。要做到這一點,請點擊Tools > Nuget Package Manager.

我們可以看到需要安裝OpenCVSharp的依賴項。

具體的實現(xiàn)發(fā)生在CoinDetector類中:

public class CoinDetector
 {
  private Mat _image;
  private Mat _originalImage;
  private string _pathToFile;

  public CoinDetector(string pathToFile)
  {
   _pathToFile = pathToFile;
  }

  public void ImagePreprocessing()
  {
   _image = new Mat(_pathToFile, ImreadModes.Color);
   _originalImage = _image.Clone();
   TransformGrayScale();
   TransformGaussianBlur();
   HoughSegmentation();
  }

  private void TransformGrayScale()
  {
   _image = _originalImage.CvtColor(ColorConversionCodes.BGR2GRAY);
   new Window("Grayed Coins", WindowMode.Normal, _image);
   Cv2.WaitKey();
  }

  private void TransformGaussianBlur()
  {
   Cv2.GaussianBlur(_image, _image, new Size(0, 0), 1);
   new Window("Blurred Coins", WindowMode.Normal, _image);
   //Cv2.WaitKey();
  }

  private void HoughSegmentation()
  {
   Mat result = _image.Clone();

   var circleSegments = Cv2.HoughCircles(_image, HoughMethods.Gradient, 1.02, 40);
   for (int i = 0; i < circleSegments.Length; i++)
   {
    Cv2.Circle(result, (Point) circleSegments[i].Center, (int)circleSegments[i].Radius, new Scalar(255, 255, 0), 2);
   }

   using (new Window("Circles", result))
   {
    Cv2.WaitKey();
   }
  }
 }

在類的構造函數中,我們接收到硬幣圖像的路徑。這個方法和ImagePreprocessing方法是CoinDetector類中僅有的兩個公共實體。所有其他方法都是私有的,與上面列出的三個階段相關。在ImageProcessing 方法中,我們保存一個原始的Mat(像素矩陣)對象的圖像,并生成即將發(fā)生的轉換副本。Mat類和所有對Cv2類的調用都來自OpenCVSharp。在每次轉換之后,我們調用new Window以可視化地顯示轉換。Cv2.HoughCircles的參數取決于你所面臨的問題,也就是正在處理的圖像。

代碼中顯示的參數符合我們的示例。

要完成硬幣檢測示例,我們可以在控制臺應用程序項目的主方法中添加以下代碼行并執(zhí)行。

 string filePath = @"C:/Users/arnal/Documents/coins.jpg";
 var coinDetector = new CoinDetector(filePath);
 coinDetector.ImagePreprocessing();

這是我們將用于測試的圖像。其中包括塞爾維亞硬幣:

最終的結果將是我們之前看到的圖像:

正如我們所看到的,在中間使用對應霍夫變換的白色圓圈標識,并被識別出來。

本系列的第一篇文章到此結束。在下一篇文章中,我們將對輸入到機器學習模型中的數據集進行預處理。

以上就是c# 使用OpenCV識別硬幣的詳細內容,更多關于c# opencv識別的資料請關注腳本之家其它相關文章!

相關文章

  • Unity Sockect實現(xiàn)畫面實時傳輸案例原理解析

    Unity Sockect實現(xiàn)畫面實時傳輸案例原理解析

    Socket是比較常用的一種通信方式,本文通過案例給大家介紹Unity Sockect實現(xiàn)畫面實時傳輸功能,感興趣的朋友一起看看吧
    2021-08-08
  • C# Winform調用百度接口實現(xiàn)人臉識別教程(附源碼)

    C# Winform調用百度接口實現(xiàn)人臉識別教程(附源碼)

    這篇文章主要介紹了C# Winform調用百度接口實現(xiàn)人臉識別教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • C#利用正則表達式實現(xiàn)獲取字符串中漢字的數量

    C#利用正則表達式實現(xiàn)獲取字符串中漢字的數量

    這篇文章主要為大家詳細介紹了C#如何利用正則表達式實現(xiàn)獲取字符串中漢字的數量,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-01-01
  • C# 添加Word文本和圖片超鏈接的方法

    C# 添加Word文本和圖片超鏈接的方法

    本文給大家介紹如何用C#編程語言對Word文檔中的文本和圖片進行超鏈接設置。感興趣的朋友一起看看吧
    2017-10-10
  • 基于C# 生成Zip壓縮包代碼

    基于C# 生成Zip壓縮包代碼

    壓縮包制作也是很多項目中需要用到的功能。接下來通過本文給大家介紹基于C# 生成Zip壓縮包代碼,對c生成zip壓縮包相關知識感興趣的朋友一起學習吧
    2016-04-04
  • c#使用xamarin編寫撥打電話程序

    c#使用xamarin編寫撥打電話程序

    Xamarin是一個行動App開發(fā)平臺,提供跨平臺開發(fā)能力,開發(fā)人員透過Xamarin開發(fā)工具與程序語言,即可開發(fā)出iOS、Android 與Windows 等平臺的原生(Native) App 應用程序,不須個別使用各平臺的開發(fā)工具與程序語言,
    2015-05-05
  • C#使用Win2D在UWP程序中實現(xiàn)2D繪圖

    C#使用Win2D在UWP程序中實現(xiàn)2D繪圖

    這篇文章介紹了C#使用Win2D在UWP程序中實現(xiàn)2D繪圖的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#實現(xiàn)掃描局域網內的所有IP和端口

    C#實現(xiàn)掃描局域網內的所有IP和端口

    這篇文章主要為大家詳細介紹了如何利用C#實現(xiàn)掃描局域網內的所有IP和端口的功能,文中的示例代碼講解詳細,對我們學習C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • C# 文件上傳下載(Excel導入,多線程下載)功能的實現(xiàn)代碼

    C# 文件上傳下載(Excel導入,多線程下載)功能的實現(xiàn)代碼

    這篇文章主要介紹了C# 文件上傳下載(Excel導入,多線程下載)功能的實現(xiàn)代碼,需要的朋友可以參考下
    2017-08-08
  • Unity搖桿制作的方法

    Unity搖桿制作的方法

    這篇文章主要為大家詳細介紹了Unity搖桿制作的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評論