文章

顯示從 6月, 2023 起發佈的文章

[應用] 在電腦應用程式,使用 GMap.NET 套件繪製出 Google 地圖

圖片
        GMap.NET 是一個功能強大的地圖繪製套件,用於 WinForm 應用程式並載入 Google 地圖。由於 Google 地圖本身提供 API 函數讓第三方使用,而 GMap.NET 套件將這些 Google 地圖的函數封裝起來,組成一個 .NET 環境下開發的函數庫,方便用 C# 語言開發地圖繪製與標示的功能。         首先,在 Visual Studio 上面開啟一個專案準備開發 GMap 地圖,接著從 NuGet 套件管理中搜尋 "GMap",安裝 GMap.NET.WinForms 等相關的軟體函數庫,如下圖一所示。 圖一:安裝 GMap.NET 套件         GMap.NET 將 Google 地圖的功能函數封裝起來,基本上,這些 GMap 函數還是用到 Google 地圖的功能,而地圖功能有分為基本款和付費款。基本款的功能,像是標示一個點,描繪一個多邊形的路徑圖,這些函數被呼叫後就能執行。付費款的功能(或稱進階功能),像是座標與地址的轉換,像是兩點的路徑搜尋 、 街景服務 、 時區....等,這些函數並不是被呼叫就能 "成功" 執行。         要想使用進階功能,先要連上 Google 控制台  https://console.cloud.google.com/ ,創建一個專案後,如下圖二所示。在憑證的頁面中,我們取得 API key 一串亂碼組成,將這串亂碼複製到前面創建的 Visual Studio 專案裡面,Key 設定到 GMapProviders 如下行,這樣我們開發的應用程式就能使用到地圖的進階功能。     GMapProviders .GoogleMap. ApiKey = "AIzaSyAzzR7MftaJafXwVxHohroTWxxyyy"; 圖二:Google地圖的 API 憑證密鑰         接下來說明 GMap.NET 提供的類別函數,第一個最重要的地圖控制元件 GMapControl,如下的描述。     GMapControl :在 WinForm 下的地圖控制元件,載入 Google 地圖。     GMapOverlay :類別用於疊加到地圖上的物件,也就是說套在 Google 地圖上面的圖 、 文字 、 線條

[應用] 利用 EmguCV 套件開發錄製 IP CAM 的影像檔案

圖片
        前面的文章介紹 Emgu.CV 套件如何擷取網路攝影機 IP CAM 的影像 https://han-ya.blogspot.com/2023/06/emgucv-opencv.html ,延續前文的操作,我們利用 Emgu.CV 提供的函數庫將影像錄製成檔案,如下圖一所示。新增一個錄影的按鈕,當擷取影像的同時,也將影像儲存成檔案。 圖一:錄製 IP CAM 的畫面         首先, VideoWriter  是一個 Emgu.CV 的類別,用來錄製影像檔,參考下圖二的說明。創建這個類別時,至少要提供的參數:錄製的檔名 、 FPS (Frame rate Per Second) 、 Frame尺寸大小 、以及是否彩色錄影。 圖二:VideoWriter 類別函數 宣告呼叫的方式,如下 vWriter = new VideoWriter (vFile, 30, vSize, true); if (vWriter.IsOpened) // 如果成功創建 {      Thread videoTask = new Thread(VideoSaveTask); // 利用一個線程處理錄製影像      videoTask.Start(); } 下圖是有關錄製影像的線程 VideoSaveTask( ),從擷取 IP CAM 影像的資料暫存器 Mat 轉換成 Image,再將 Image 寫入檔案中。 圖三:處理錄製的線程

[筆記] EmguCV 封裝 OpenCV 函數庫的跨平台套件

圖片
Emgu CV 是一套跨平台的影像處理套件,它使用 .Net 核心將 OpenCV 的影像處理函數庫封裝成 Emgu CV。從 2008 年的 1.2 版本開始,Emgu不斷進化發展,於 2009 年推出 2.0 版本,並於 2015 年推出 3.0 版本,之後於 2019 年發佈 4.0 版本,目前已經更新至 4.7 版本。最新版本的 Emgu 支援多個平台,包括 Windows、Linux、iOS、安卓...等。此外,Emgu 還提供了 C#、C++、VB.NET 等語法的範例程式碼供開發人員參考。要使用 Emgu,開發環境需要使用微軟的 Visual Studio 2017 或更高版本。         在實作一個 IP Cam 網路擷取影像的案例之前,讓我們先討論一下 Emgu 的一些缺點。在我的開發過程中,我發現 Emgu 存在一個重要問題,就是版本間的程式碼無法相容。例如,在使用 3.1 版本進行開發後,當升級到 4.2 版本時,許多函數的介面會有所變動,有些類別的命名也會發生改變,這導致程式碼無法在不同版本之間相容。這個問題是 Emgu 的一個重大缺點。         開啟微軟的 Visual Studio 2017 / 2019 開發工具,創建一個專案,接著在專案裡載入 Emgu.CV 軟體套件。點擊 “管理 NuGet 套件” 後,出現如下圖所示的頁面,我們搜尋 Emgu,NuGet 會找到相關的套件,點擊安裝後,便會加載到我們的專案裡頭了。由於我們實作過程會用到 Windows Form,所以還需要安裝 Emgu.CV.UI,它會將 Windows Form 封裝起來並與 Emgu.CV 的影像函數整合,這樣我們就不需要為了 Image 格式的轉換傷腦筋。 圖一:搜尋 Emgu 相關的套件 圖二:安裝所需要的 Emgu.CV         當我們安裝好 Emgu.CV 套件後,點擊 VS 2019 的工具箱,發現多出了一個 Emgu.CV 欄位,如下圖三紅色框所示。拖拉 ImageBox 這個元件,建立一個小螢幕用來顯示 IP Cam 的畫面,同時再拉一個小按鈕,用來切換建立或中斷 RTSP 影像連線。切記別用 Windows Form 工具裡的 PictureBox,它與 Emgu.CV 之間還需要進行 Image 格式