Я работаю над проектом с использованием WPF для отображения Kinect ColorImageFrame и представления скелета. Я также должен записать эти два видео.C# MemoryStream замедляет выполнение программы
Я могу отображать и записывать (используя EmguCV) эти два изображения, но у меня есть некоторые проблемы с производительностью. Похоже, что эта часть моего кода является причиной моей потери производительности.
private void DrawSkeleton(Skeleton[] skeletons)
{
using (System.Drawing.Bitmap skelBitmap = new System.Drawing.Bitmap(640, 480))
{
foreach (Skeleton S in skeletons)
{
if (S.TrackingState == SkeletonTrackingState.Tracked)
{
DrawBonesAndJoints(S,skelBitmap);
}
else if (S.TrackingState == SkeletonTrackingState.PositionOnly)
{
}
}
_videoArraySkel.Add(ToOpenCVImage<Bgr, Byte>(skelBitmap));
BitmapSource source = ToWpfBitmap(skelBitmap);
this.skeletonStream.Source = source;
}
}
и более точно от ToWpfBitmap, который позволяет мне показать это в моем окне:
public static BitmapSource ToWpfBitmap(System.Drawing.Bitmap bitmap)
{
using (MemoryStream stream = new MemoryStream())
{
bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
stream.Position = 0;
BitmapImage result = new BitmapImage();
result.BeginInit();
// According to MSDN, "The default OnDemand cache option retains access to the stream until the image is needed."
// Force the bitmap to load right now so we can dispose the stream.
result.CacheOption = BitmapCacheOption.OnLoad;
result.StreamSource = stream;
result.EndInit();
result.Freeze();
return result;
}
}
Потеря производительности характеризуется: - Видео, отображаемые на окне не владеет больше - Видеозапись, кажется, пропускает некоторые кадры, что приводит к тому, что видео становится быстрее/ниже обычного.
Можете ли вы мне помочь, сообщив мне, откуда эта проблема?
Может быть, эта статья CodeProject о [Bitmap к BitmapSource] (http://www.codeproject.com/Articles/104929/Bitmap-to-BitmapSource) преобразование может помочь вам , Пробовали ли вы использовать метод System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap? – Dirk
Я уже пытался использовать этот метод, но странно растровое изображение больше не отображается в моем окне ... –