Webcam フィードを表示する必要がある WPF アプリケーションを作成しています。AForge フレームワークでこれを簡単に実行できましたが、あるコンピューターから別のコンピューターに変更すると、同じコードが同じようには機能しません。
最初のものではウェブカメラ フィードは完全に機能しますが、もう 1 つのものではこれが発生せず、フィードに多くの遅延があり、アプリケーションが適切に機能しません。
コードは次のとおりです。
private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
Bitmap img = (Bitmap)eventArgs.Frame.Clone();
this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Render, (SendOrPostCallback)delegate
{
IntPtr hBitmap = img.GetHbitmap();
System.Windows.Media.Imaging.BitmapSource bitmapSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
hBitmap,
IntPtr.Zero,
Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
DeleteObject(hBitmap);
img.Dispose();
GC.Collect();
image1.Source = bitmapSource;
}, null);
}
このコードは非常に単純で、webcam から new_frame を の形式で取得し、Bitmap
それを に変換する必要があるBitmapSource
ため、WPF の画像フレームに表示できます。この変換が起こっている混乱の原因だと思いますが、なぜそれがコンピューターで機能し、他のコンピューターでは機能しないのか理解できません。
コンピューターのスペックはほぼ同じで、プロセッサもシステム メモリも同じです。
ここでの私の問題はパフォーマンスに関するもので、あるコンピューターのこのコードはスムーズに実行され、Web カメラ フィードは正常に表示されますが、別の PC に移植すると、これは起こりません。