EmguCV показать коврик в теге изображения C# WPF - PullRequest
0 голосов
/ 18 марта 2020

Есть ли способ показать объект Mat внутри тега изображения WPF в c#?

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

Также есть способ нарисовать изображение внутри тега canvas / image вместо нового окна, которое открывает Imshow?

CvInvoke.Imshow("ponaredek", slika);

И, наконец, для начинающего, что лучше использовать? EmguCV или обычный openCV?

1 Ответ

0 голосов
/ 19 марта 2020

Если вы хотите показать изображение, которое вы читаете внутри вашего WPF, вы можете использовать источник изображения, который находится в Xaml. Вам следует преобразовать объект Mat в растровое изображение, а затем растровое изображение в исходный объект изображения, так как это потребуется для отображения изображения. Эта форма stack подробно описывает, как это сделать.

Сначала преобразуйте объект 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); }               
}

Вам нужно будет добавить несколько ссылок на ваш проект, но этот метод работал для меня в прошлом. Что касается рисования на изображении, я не уверен, как это сделать, потому что вам придется обновлять ваш рисунок на вашем изображении каждый раз, когда мышь двигается, что вы должны были бы включать в себя некоторые аргументы событий мыши.

...