使用EmguCV注入网络摄像头帧的图像源绑定

本文关键字:图像 绑定 摄像头 EmguCV 注入 网络 使用 | 更新日期: 2023-09-27 18:20:57

我在图像控件的视图中使用它来显示我的网络摄像头在视图的cs文件中,我使用EmguCV和一个后台工作程序对每一帧进行采样,并将其注入Image.source,效果非常好。

现在我正试图通过ViewModel进行绑定,但Image.Source从不更新。

视图:

<Image x:Name="imgVideo" Canvas.Left="0" Canvas.Top="0" Stretch="Fill" Source="{Binding Path=ImageSource}" Width="400" Height="266" />

ViewModel(相关部分):

using System.Windows.Media;
 ImageSource imageSource;
        public ImageSource ImageSource
        {
            get { return imageSource; }
            set
            {
                imageSource = value;
                this.RaisePropertyChanged("ImageSource");
            }
        }
 void worker_DoWork(object sender, DoWorkEventArgs e)
        {
                Image<Bgr, Byte> currentFrame = m_capture.QueryFrame();
               ... 
                  e.Result = currentFrame ;
}
private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
                Image<Bgr, Byte> result = e.Result as Image<Bgr, Byte>;
                BitmapSource bitmapSource = ToBitmapSource(result);
                JpegBitmapEncoder encoder = new JpegBitmapEncoder();
                MemoryStream memoryStream = new MemoryStream();
                encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
                encoder.Save(memoryStream);
                var source = new BitmapImage();
                source.BeginInit();
                source.StreamSource = new MemoryStream(memoryStream.ToArray());
                source.EndInit();
                memoryStream.Close();

                ImageSource = source;

                result.Dispose();
}

任何帮助都将不胜感激,谢谢。

使用EmguCV注入网络摄像头帧的图像源绑定

I假设(即使只是阅读这篇文章也很难说)没有任何DataContext分配给<Image.... />。这就是,imo,你的问题最可能的原因。