最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c# 使用OpenCV識(shí)別硬幣

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

在本系列文章中,我們將使用深度神經(jīng)網(wǎng)絡(luò)(DNN)來執(zhí)行硬幣識(shí)別。具體來說,我們將訓(xùn)練一個(gè)DNN識(shí)別圖像中的硬幣。

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

本系列附帶的代碼將使用Keras在C#中實(shí)現(xiàn)。在本系列的最后一篇文章中,我們將簡要地使用ML.NET。在眾多選擇中,為什么要使用Keras.NET呢?Keras.NET 非常容易學(xué)習(xí),因?yàn)樗旧鲜菑腜ython編寫的經(jīng)典TensorFlow到C#的直接映射。對(duì)于不熟悉機(jī)器學(xué)習(xí)的讀者來說,這比用其他方法創(chuàng)建示例要容易得多。

硬幣檢測(cè)過程分為三個(gè)階段:

  1. 轉(zhuǎn)換圖像到灰度。顏色增加了檢測(cè)任務(wù)的復(fù)雜性,而且在很多情況下,它們不能傳遞任何可以從圖像亮度中獲取的相關(guān)信息。
  2. 應(yīng)用高斯模糊。因?yàn)橛矌磐ǔ0粋€(gè)內(nèi)圓,我們應(yīng)用這個(gè)變換來模糊圖像。這確保了任何內(nèi)圓被下一步中的操作忽略,所以我們的算法不會(huì)意外地認(rèn)為它們是一個(gè)單獨(dú)的硬幣。
  3. 應(yīng)用霍夫變換。這是為了檢測(cè)圓形。

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

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

我們可以看到需要安裝OpenCVSharp的依賴項(xiàng)。

具體的實(shí)現(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();
   }
  }
 }

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

代碼中顯示的參數(shù)符合我們的示例。

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

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

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

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

正如我們所看到的,在中間使用對(duì)應(yīng)霍夫變換的白色圓圈標(biāo)識(shí),并被識(shí)別出來。

本系列的第一篇文章到此結(jié)束。在下一篇文章中,我們將對(duì)輸入到機(jī)器學(xué)習(xí)模型中的數(shù)據(jù)集進(jìn)行預(yù)處理。

以上就是c# 使用OpenCV識(shí)別硬幣的詳細(xì)內(nèi)容,更多關(guān)于c# opencv識(shí)別的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • c#計(jì)算某段代碼的執(zhí)行時(shí)間實(shí)例方法

    c#計(jì)算某段代碼的執(zhí)行時(shí)間實(shí)例方法

    在本篇文章里我們給大家整理了關(guān)于c#計(jì)算某段代碼的執(zhí)行時(shí)間的方法和經(jīng)驗(yàn),有興趣的朋友們學(xué)習(xí)下。
    2019-02-02
  • 如何在UpdatePanel中調(diào)用JS客戶端腳本

    如何在UpdatePanel中調(diào)用JS客戶端腳本

    本文將介紹如何在UpdatePanel中調(diào)用JS客戶端腳本,需要了解的朋友可以參考下
    2012-12-12
  • C#使用DateTime.Now靜態(tài)屬性動(dòng)態(tài)獲得系統(tǒng)當(dāng)前日期和時(shí)間

    C#使用DateTime.Now靜態(tài)屬性動(dòng)態(tài)獲得系統(tǒng)當(dāng)前日期和時(shí)間

    本文主要介紹了C#使用DateTime.Now靜態(tài)屬性動(dòng)態(tài)獲得系統(tǒng)當(dāng)前日期和時(shí)間,DateTime結(jié)構(gòu)的Now靜態(tài)屬性只是得到一個(gè)系統(tǒng)時(shí)間對(duì)象,該時(shí)間對(duì)象不會(huì)隨著系統(tǒng)時(shí)間的變化而變化,如果要?jiǎng)討B(tài)顯示系統(tǒng)時(shí)間,可以使用計(jì)時(shí)器間隔地獲取系統(tǒng)時(shí)間對(duì)象并顯示,感興趣的可以了解一下
    2024-01-01
  • C# 服務(wù)器發(fā)送郵件失敗實(shí)例分析

    C# 服務(wù)器發(fā)送郵件失敗實(shí)例分析

    在本篇文章里小編給大家?guī)硪黄P(guān)于C# 服務(wù)器發(fā)送郵件失敗實(shí)例內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-03-03
  • 基于C#技術(shù)實(shí)現(xiàn)身份證識(shí)別功能

    基于C#技術(shù)實(shí)現(xiàn)身份證識(shí)別功能

    這篇文章主要介紹了基于C#技術(shù)實(shí)現(xiàn)身份證識(shí)別功能的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • C#算法之實(shí)現(xiàn)阿姆斯特朗數(shù)

    C#算法之實(shí)現(xiàn)阿姆斯特朗數(shù)

    這篇文章介紹了C#實(shí)現(xiàn)阿姆斯特朗數(shù)的算法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • C# 使用WPF 用MediaElement控件實(shí)現(xiàn)視頻循環(huán)播放

    C# 使用WPF 用MediaElement控件實(shí)現(xiàn)視頻循環(huán)播放

    在WPF里用MediaElement控件,實(shí)現(xiàn)一個(gè)循環(huán)播放單一視頻的程序,同時(shí)可以控制視頻的播放、暫停、停止。這篇文章給大家介紹了C# 使用WPF 用MediaElement控件實(shí)現(xiàn)視頻循環(huán)播放,需要的朋友參考下吧
    2018-04-04
  • c#模擬銀行atm機(jī)示例分享

    c#模擬銀行atm機(jī)示例分享

    這篇文章主要介紹了c#模擬銀行atm機(jī)示例,實(shí)現(xiàn)了用戶登錄、用戶存款、用戶取款等功能,需要的朋友可以參考下
    2014-03-03
  • C# 嵌入dll 的方法

    C# 嵌入dll 的方法

    這篇文章主要介紹了C# 嵌入dll 的方法,本文圖文并茂給大家及時(shí)的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • C# Directory.GetFiles()函數(shù)案例詳解

    C# Directory.GetFiles()函數(shù)案例詳解

    這篇文章主要介紹了C# Directory.GetFiles()函數(shù)案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08

最新評(píng)論

安徽省| 东宁县| 集安市| 泗水县| 左云县| 灌云县| 当雄县| 车险| 东莞市| 门源| 昆山市| 宿州市| 宁武县| 循化| 剑阁县| 湛江市| 大兴区| 攀枝花市| 大同市| 海林市| 巴楚县| 左云县| 镇巴县| 汝州市| 平江县| 扶绥县| 安乡县| 竹北市| 民权县| 黎川县| 涞水县| 龙泉市| 浦北县| 怀柔区| 建宁县| 左权县| 三门峡市| 商洛市| 连城县| 黄石市| 博乐市|