iT邦幫忙

1

[VS] C# - [01] EmguCV 影像讀取

Nil 2022-09-19 17:36:254324 瀏覽
  • 分享至 

  • xImage
  •  

摘要

本章節將會介紹如何使用 EmguCV 套件進行影像讀取,若未使用 NuGet 安裝EmguCV套件請參照上一篇文章[VS] C# - 使用 NuGet 進行套件安裝進行安裝。


實作

介面設置

主程式介面請參照圖一所示,元件功能如下所述:

  • textBoxImagePath: 顯示選擇檔案(圖像)路徑。
  • buttonGetImagePath: 一開始會出現讓使用選擇路徑視窗,並該使用者選擇完檔案(*.bmp)時顯示影像。
  • pictureBoxDisplayImage: 顯示使用者選擇檔案的影像。


圖一 MainForm介面


引用與全域變數

即便使用 NuGet 把套件安裝至專案,也需要透過 using 的方式把套件引用至類別,因此還是要針對套件進行引用。

using Emgu.CV;
using Emgu.CV.Structure;
string m_imagePath;
Image<Bgr, Byte> m_image;

備註:若使用 Image<Bgr, Byte> 底下出現錯誤,請注意是否引用 using Emgu.CV.Structure


選擇檔案路徑

把路徑寫死固然容易,但我習慣為了讓整個軟體寫的比較彈性化,因此這邊採用的是路徑選擇視窗讓使用者選擇位置,當然也可以把路徑寫死。

下面是常用的路徑選擇:

  • OpenFileDialog: 選擇已存在的檔案,回傳路徑如C:\Users\Nil\doc\image.bmp
  • FolderBrowserDialog: 選擇路徑,回傳路徑如C:\Users\Nil\doc
  • SaveFileDialog: 保存檔案路徑,使用者可定義檔案名稱如C:\Users\Nil\doc\{fileName}
private void buttonGetImagePath_Click(object sender, EventArgs e)
{
    OpenFileDialog ofd = new OpenFileDialog();
    // 顯示預設路徑。
    ofd.InitialDirectory = "./";
    // 設定檔案儲存類型範例為.bmp若要增加其他類型可使用{名稱}|.{類型}。
    ofd.Filter = "Bitmap Files|*.bmp";
    ofd.Title = "選擇影像檔案";
    // 紀錄最後視窗路徑位置。
    ofd.RestoreDirectory = true;
    // 顯示視窗,當按下確定(OK)時進入。
    if (ofd.ShowDialog() == DialogResult.OK)
    {
        // 保存使用者選擇檔案的路徑位置
        m_imagePath = ofd.FileName;
        textBoxImagePath.Text = m_imagePath;
        // 讀取影像並顯示。
        DisplayImage(m_imagePath);
    }
}

讀取影像

private void DisplayImage(string path)
{
    try
    {
        // 為 Bitmap 讀取方式。
        // Bitmap bitmap = new Bitmap(m_imagePath);
        // 該方法則為 EmguCV 的讀取方式。
        m_image = new Image<Bgr, byte>(path);
        pictureBoxDisplayImage.Image = (Bitmap)m_image.ToBitmap().Clone();
        pictureBoxDisplayImage.Invalidate();
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}

Color 與 Depth 描述:

  • Color: Gray, Bgr, Bgra, Hsv, Hls, Lab, Luv, Xyz, Ycc, Rgb or Rbga
  • epth: Byte, SByte, Single, double, UInt16, Int16 or Int32

Image<TColor, TDepth>


結果


圖二 選擇檔案視窗


圖三 顯示影像


結論

本篇文章透過選擇檔案視窗的方式取得使用者的路徑,並使用 EmguCV 的套件進行影像的讀取並顯示,雖然使用 Bitmap 也可以將影像讀入,但之後若要使用 EmguCV 的套件進行影像處理就可以不用將 Bitmap 再次轉換成 EmguCV的格式。

GitHub: Link.


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言