使用 C# 和 C DLL 进行回调,无法获得比 16FPS 更好的帧捕获率,为什么?

发布于 2024-11-25 05:57:47 字数 294 浏览 0 评论 0原文

我有一个 C# 应用程序,用于连接 USB 摄像头。它运行得很好,只是我无法达到每秒 16 帧左右的速度。我正在使用 VFW 和每个 WM_CAP_GRAB_FRAME_NOSTOP 消息的“C”回调(回调是 DLL 的一部分),并且我发现即使我在回调中基本上什么也不做,我无法获得像样的帧速率(16FPS 大约是最大值)。

认为使用这个接口会给我带来比其他替代方案(例如 DirectShow)更好的性能,仅仅是因为它的简单性和与驱动程序的低级连接;但现在我开始怀疑这是否属实。
有人对此有任何见解吗?

I have an application in C# that interfaces to a USB camera. It's been working just fine except for the fact that I have not been able to achieve better than about 16 frames-per-second. I'm using VFW, and a 'C' callback (the callback is part of a DLL) per WM_CAP_GRAB_FRAME_NOSTOP message, and I've found that even if I do essentially NOTHING in the callback, I am unable to get a decent frame rate (16FPS is about the max).

I thought that using this interface would give me better performance than other alternatives (DirectShow for example) simply because of its simplicity and low-level connection to the driver; but now I'm beginning to wonder if that's true.
Anyone have any insight on this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

时间你老了 2024-12-02 05:57:47

让我大胆猜测一下...

您是否使用了 System.Timers.Timer?或者,程序的C部分是否使用Windows Timer?如果这样做,则其有限的分辨率可能是问题的原因。

Let me hazard a guess...

Are you using System.Timers.Timer by any chance? Or, is the C portion of the program using Windows Timer? If you do, its limited resolution might be the cause of the problem.

塔塔猫 2024-12-02 05:57:47

我从来没有弄清楚为什么 VFW 似乎限制了我的帧速率;但是,我发现了 C# 的 VideoInput ,我现在使用它。让我能够更好地控制相机并获得更高的帧速率。

I never did find out why VFW appears to limit my frame rate; however, I found VideoInput for C# and I now use that instead. Gives me much more control over the camera and much higher framerates.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文