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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.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
C# 使用EmguCV注入网络摄像头帧的图像源绑定_C#_Wpf_Emgucv - Fatal编程技术网

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

C# 使用EmguCV注入网络摄像头帧的图像源绑定,c#,wpf,emgucv,C#,Wpf,Emgucv,我在视图中使用图像控件来显示我的网络摄像头 在视图的cs文件中,我使用EmguCV和一个后台工作程序对每个帧进行采样,并将其注入Image.source,效果非常好 现在我尝试通过ViewModel绑定,但是Image.Source永远不会更新 视图: 视图模型(相关部分): 使用System.Windows.Media; 图像源图像源; 公共图像源图像源 { 获取{return imageSource;} 设置 { imageSource=值; 此.RaisePropertyChanged

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

现在我尝试通过ViewModel绑定,但是Image.Source永远不会更新

视图:


视图模型(相关部分):

使用System.Windows.Media;
图像源图像源;
公共图像源图像源
{
获取{return imageSource;}
设置
{
imageSource=值;
此.RaisePropertyChanged(“ImageSource”);
}
}
无效工作线程(对象发送器,工作线程目标)
{
Image currentFrame=m_capture.QueryFrame();
... 
e、 结果=当前帧;
}
私有void worker\u RunWorkerCompleted(对象发送方,RunWorkerCompletedEventArgs e)
{
图像结果=e.结果为图像;
BitmapSource BitmapSource=ToBitmapSource(结果);
JpegBitmapEncoder编码器=新的JpegBitmapEncoder();
MemoryStream MemoryStream=新的MemoryStream();
encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
编码器。保存(memoryStream);
var source=新的位图图像();
source.BeginInit();
source.StreamSource=newmemoryStream(MemoryStream.ToArray());
source.EndInit();
memoryStream.Close();
图像源=源;
result.Dispose();
}

非常感谢您的帮助。

我想(即使仅仅阅读本文也很难说)没有任何
数据上下文分配给
。这就是你问题的最可能原因。

如果你在ImageSource的get中设置了一个断点,它会命中吗?你是天才,最“愚蠢”的答案,99%的时间都会导致“知道帮助”,这让我意识到我在datacontext绑定中遇到了一个拼写错误:)你是第一,谢谢@ibm123:不客气。这只是基于我失败的经验,我肯定不是天才。
<Image x:Name="imgVideo" Canvas.Left="0" Canvas.Top="0" Stretch="Fill" Source="{Binding Path=ImageSource}" Width="400" Height="266" />
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();
}