gpt4 book ai didi

.net - 性能更新 - WPF 中更好的图像帧速率

转载 作者:行者123 更新时间:2023-12-02 15:09:20 28 4
gpt4 key购买 nike

我正在 .Net 4.0 中的 WPF 中工作。我有一些来自相机的巨大图像,分辨率为 1392x1040 像素。每个帧都以 System.Drawing.Bitmap 形式出现,并将使用

转换为 BitmapImage
Public Function BitmapToWpfBitmapSource(ByVal bmSrc As System.Drawing.Bitmap) As BitmapSource
If bmSrc Is Nothing Then Return Nothing
Dim res As BitmapSource
Dim Ptr As IntPtr
Ptr = bmSrc.GetHbitmap(System.Drawing.Color.Black) 'Create GDI bitmap object
res = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(Ptr, IntPtr.Zero, System.Windows.Int32Rect.Empty, BitmapSizeOptions.FromWidthAndHeight(bmSrc.Width, bmSrc.Height))
Dim ret As Integer = DeleteObject(Ptr) 'Delete GDI bitmap object
GC.Collect() 'Because the code is not managed, we need to call the collector manually to avoid memory spikes
Return res
End Function

如果我更新 GUI 中的图像,我可以获得大约 7 帧/秒。

image framerate count

有一些通过降低质量来提高速度的可能性:

  • 使用最近邻居进行渲染

RenderOptions.SetBitmapScalingMode(Me.ucWindow1.VideoPresenter1.img1, BitmapScalingMode.NearestNeighbor)

  • 使用线程来更新每一帧

    Dim dl As New SetImageDelegate(AddressOf UpdateImageInGuiGuiThread)Me.Dispatcher.Invoke(dl, imgSrc)

  • 使用 32 位和 24 位图像进行测试 - compare Imageformat

使用Performance profiling suite用于帧率计数

但 CPU 仍然约为 10%,而不是 100%,帧速率约为最大 12FPS,而不是 39 (Winforms)。

如何提高相机的帧速率?

最佳答案

我怀疑您的 GPU 负载过高。当我做过类似的程序时,WPF渲染使用了大量的GPU资源,这很容易成为瓶颈。

关于.net - 性能更新 - WPF 中更好的图像帧速率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6432197/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com