• 使用opencvsharp通过mvvm在image中显示图片


    在wpf mvvm框架中,通过Image控件的 Source属性绑定BitmapImage动态显示图片

    1.MainWindowVIewModel.cs

    using System.Windows.Media.Imaging; //使用BitMapImage类型
    using System.Drawing;

    //Mat转Bitmap

    1         public Bitmap MatToBitmap(Mat image)
    2         {
    3             return OpenCvSharp.Extensions.BitmapConverter.ToBitmap(image);
    4         }
    //Mat转BitmapImage
    1
    public BitmapImage MatToBitmapImage(Mat image) 2 { 3 Bitmap bitmap = MatToBitmap(image); 4 using (MemoryStream stream = new MemoryStream()) 5 { 6 bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png); 7 8 stream.Position = 0; 9 BitmapImage result = new BitmapImage(); 10 result.BeginInit(); 11 // According to MSDN, "The default OnDemand cache option retains access to the stream until the image is needed." 12 // Force the bitmap to load right now so we can dispose the stream. 13 result.CacheOption = BitmapCacheOption.OnLoad; 14 result.StreamSource = stream; 15 result.EndInit(); 16 result.Freeze(); 17 return result; 18 } 19 }

    //定义数据属性

     1         private BitmapImage img;
     2 
     3         public BitmapImage Img
     4         {
     5             get { return img; }
     6             set
     7             {
     8                 img = value;
     9                 this.RaisePropertyChanged("Img");
    10             }
    11         }
    1                 Mat image=new Mat(FileNames[i],ImreadModes.Unchanged); //通过路径读入Mat类型的image
    3 this.Img = MatToBitmapImage(image); //将image转换为BitmapImage传给Img,Img与Source绑定。

    //2.MainWindow.xaml

    1         <Image HorizontalAlignment="Left" Grid.Row="1" Grid.Column="0" Margin="20,20,0,0" Width="800" Source="{Binding Img}" Grid.RowSpan="2" Height="800" VerticalAlignment="Top"/>
  • 相关阅读:
    opengl一些基础函数-- 缓冲区
    width = 100%??
    设置scrollTop无效
    es5与es6继承区别
    immutable-treeUtils树的理解
    react 事件绑定
    es-6 class
    es6-Module语法
    es6--set数组去重,Map数据结构
    promise对象
  • 原文地址:https://www.cnblogs.com/sclu/p/12176680.html
Copyright © 2020-2023  润新知