Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何将emgu CV Mat类型转换为可以用作图像源的类型?_.net_Wpf_Emgucv - Fatal编程技术网

.net 如何将emgu CV Mat类型转换为可以用作图像源的类型?

.net 如何将emgu CV Mat类型转换为可以用作图像源的类型?,.net,wpf,emgucv,.net,Wpf,Emgucv,我正在使用emgu CV进行计算机视觉任务,需要动态操作图像并显示结果。我找不到一种方法将Mat类型转换为与ImageSource兼容的类型,以便在WPF图像控件上显示它。这些示例都是针对2.x的,我使用的是3.1。很多东西对3.x不起作用。我找了几个小时,但找不到有效的解决办法。有没有简单的解决办法?谢谢。好的。我找到了一条路。我把它贴在这里,以防其他人也有同样的问题。基本上,我使用ToBitmap方法将其转换为位图,然后使用BitmapImage从MemoryStream(使用bitmap.

我正在使用emgu CV进行计算机视觉任务,需要动态操作图像并显示结果。我找不到一种方法将Mat类型转换为与ImageSource兼容的类型,以便在WPF图像控件上显示它。这些示例都是针对2.x的,我使用的是3.1。很多东西对3.x不起作用。我找了几个小时,但找不到有效的解决办法。有没有简单的解决办法?谢谢。

好的。我找到了一条路。我把它贴在这里,以防其他人也有同样的问题。基本上,我使用ToBitmap方法将其转换为位图,然后使用BitmapImage从MemoryStream(使用bitmap.Save方法转储)中读取它。

您可以这样使用它

    private void ProcessFrame(object sender, EventArgs arg)
    {
        if (_capture != null && _capture.Ptr != IntPtr.Zero)
        {
            Mat _frame = new Mat();
            _capture.Retrieve(_frame, 0);

            Dispatcher.BeginInvoke(new ThreadStart(delegate
            {
                image_control.Source = ConvertBitmap(_frame.Bitmap);
            }));
        }
    }

    public BitmapImage ConvertBitmap(System.Drawing.Bitmap bitmap)
    {
        MemoryStream ms = new MemoryStream();
        bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
        BitmapImage image = new BitmapImage();
        image.BeginInit();
        ms.Seek(0, SeekOrigin.Begin);
        image.StreamSource = ms;
        image.EndInit();

        return image;
    }

您应该发布工作代码以帮助所有人。