如何在监视器上显示 120fps 10 位相机的输出?

问题描述

我有一个 USB 摄像头,它以 120 FPS 的速度输出 1280x480 10 位灰度图像。我还有一个 LG 34GN850 monitor,它能够达到 144Hz 的刷新率。它支持 nVidia G-Sync,每个 RGB 通道 10 位。最后,显示器由 nVidia Quadro RTX 4000 显卡驱动。

理论上,通过这种设置,我应该能够在监视器上完美地显示相机的输出。每一帧,每一位像素。

目前,我在 Python 中使用 OpenCV 来显示来自相机的帧,但是:

  1. 我认为它不支持每像素 10 位。
  2. 我认为它不支持 nVidia G-Sync,因此屏幕的刷新率与相机的更新率同步。

问题:

  • 如何在不丢失帧或位的情况下在监视器上显示摄像机的输出? python 中的 OpenCV 可以处理这个问题,还是我需要使用 DirectX?
  • 哪些编程框架支持这种功能
  • 有我可以参考的示例吗?我很高兴在 Windows 或 Linux 中实现它,但更喜欢 Windows。

解决方法

“不要认为它支持 nVidia G-Sync,这样屏幕的刷新率就会与相机的更新率同步。”

什么?这不是它的工作原理。如果您从 Nvidia 驱动程序 440.97 开始使用 OpenGL、OpenCL、DirectX 或 Vulkan,它会自动运行,就像在 Photoshop 中一样。特别是如果您使用 vulkan,它会在 mpv 中自动工作。

您为什么将其标记为 HDR? 10 位与 HDR 无关。它也可以是 SDR,你甚至说它是灰度的。

您不需要 Quadro 卡。 10 位甚至 SDR 在 Nvidia Geforce 卡上在 Photoshop 等中被激活。

这里的答案是使用ffmpeg -f dshow,但是可能还不支持示例格式,如果确实是P010。请参阅:https://trac.ffmpeg.org/ticket/8454

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...