Привязка источника изображения для ввода кадра веб-камеры с помощью EmguCV - PullRequest
0 голосов
/ 22 января 2012

Я использую в своем представлении в элементе управления изображениями отображение моей веб-камеры в CS-файле представления. Я использовал EmguCV с фоновым рабочим для выборки каждого кадра и вставки его в Image.source, и он работал отлично.

Теперь я пытаюсь сделать это с привязкой через ViewModel, но источник Image.Source никогда не обновляется.

View:

<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();
}

любая помощь будет высоко оценена, спасибо.

1 Ответ

0 голосов
/ 22 января 2012

I предполагает (даже трудно просто прочитав этот пост), что DataContext не присвоено <Image.... />. Это, по-моему, наиболее вероятная причина вашей проблемы.

...