簡體   English   中英

EmguCV 在圖像標簽中顯示 Mat C# WPF

[英]EmguCV show Mat in Image tag C# WPF

有沒有辦法在 c# 中的 WPF 圖像標簽內顯示 Mat 對象?

Mat image= CvInvoke.Imread(op.FileName, Emgu.CV.CvEnum.ImreadModes.AnyColor);

另外,有沒有辦法在畫布/圖像標簽內的圖像上繪制,而不是 Imshow 打開的新窗口?

CvInvoke.Imshow("ponaredek", slika);

最后,對於初學者來說,哪個更好用? EmguCV 還是常規的 openCV?

如果要顯示在 WPF 中讀取的圖像,可以使用 Xaml 中的圖像源。 您應該將 Mat 對象轉換為位圖,然后將位圖轉換為圖像源對象,因為這是顯示圖像所必需的。 此處的堆棧形式詳細介紹了如何執行此操作。

首先將您的 Mat 對象轉換為位圖。

//Convert the Mat object to a bitmap
Bitmap img = image.ToBitmap();

//Using the method below, convert the bitmap to an imagesource
imgOutput.Source = ImageSourceFromBitmap(img);

我上面調用的函數可以通過下面的代碼實現。

//If you get 'dllimport unknown'-, then add 'using System.Runtime.InteropServices;'
[DllImport("gdi32.dll", EntryPoint = "DeleteObject")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool DeleteObject([In] IntPtr hObject);

public ImageSource ImageSourceFromBitmap(Bitmap bmp)
{
    var handle = bmp.GetHbitmap();
    try
    {
        return Imaging.CreateBitmapSourceFromHBitmap(handle, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
    }
    finally { DeleteObject(handle); }               
}

您將不得不為您的項目添加一些引用,但這種方法過去對我有用。 至於在圖像上繪圖,我不確定如何完成此操作,因為每次鼠標移動時您都必須更新圖像上的繪圖,您必須合並一些鼠標事件參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM