Ok Lösung gefunden. Ich kann nicht den ganzen Code zeigen, aber ich kann ein wenig erklären, WPf Ansicht zu binden:
<Image x:Name="ImageWebcam" />
Zu meinem Viewmodel (mit Caliburn FrameWork, aber dies leicht zu einem MVVM Muster angepasst werden kann) muß ich bindet das Bild mit einer Funktion mit dem gleichen Namen:
public WriteableBitmap ImageWebcam
{
get
{
return this.imageWebcam;
}
set
{
this.imageWebcam = value;
this.NotifyOfPropertyChange(() => this.ImageWebcam);
}
}
Und dieses Bild, das ich einen Timer verwenden, um zu aktualisieren, muss das sein initialisieren in das Ansichtsmodell Konstruktor:
public MachinBidule()
{
timeIsRunningOut= new System.Timers.Timer();
timeIsRunningOut.AutoReset = true;
timeIsRunningOut.Interval = 10;
timeIsRunningOut.Elapsed += (sender, e) => { UpdateImage(); };
capture = new Capture(); // Capture the webcam using EmguCV
}
Und nun können Sie das Update mit einem Dispatcher verwalten:
// Update the image, method called by the timer every 10 ms
private void UpdateImage()
{
// If capture is working
if(capture.QueryFrame()!= null)
{
//capture an Image from webcam stream and
Image<Bgr, Byte> currentFrame = capture.QueryFrame().ToImage<Bgr, Byte>();
if (currentFrame != null)
{
Application.Current.Dispatcher.BeginInvoke(new System.Action(() => { imageWebcam = new WriteableBitmap(BitmapSourceConvert.ToBitmapSource(currentFrame)); NotifyOfPropertyChange(() => ImageWebcam); }));
}
}
}
können Sie feststellen, dass wir von emguCV Image<Bgr,Byte>
zu WPF WriteableBitmap
und benachrichtigen Sie das Update mit NotifyOfPropertyChange(() => ImageWebcam)
konvertieren müssen.
Bitte zögern Sie nicht mich zu kontaktieren oder kommentieren, wenn Sie Fragen haben. Wenn Sie einen Fehler bemerkt haben, zögern Sie nicht, mich zu korrigieren (Grammatik & Code).
EmguCV erfassen ein "Bgr-Bild", kann ich das also wirklich als Video verwenden? –
nur um ein Bild zu zeigen, bitte, siehe Abschnitt aktualisiert – StepUp
@EstebanChamard Fühlen Sie sich frei, eine Frage zu stellen. Wenn Sie meinen, dass meine Antwort Ihnen hilft, dann können Sie meine Antwort als eine Antwort markieren, um die zukünftige Suche nach anderen Personen zu vereinfachen. Bitte lesen Sie diese http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – StepUp