我在c#app中使用aForge.NET库来访问平板电脑Lenovo Yoga 2(内置摄像头)上的摄像头设备。
我正在尝试设置流的特定(最大可能)分辨率。为此,我正在使用VideoCaptureDevice对象的VideoCapabilities属性。 我相信VideoCapabilities列表并不完整。我的问题是“为什么?”是否有可能重新审视它们(VideoCapabilities)?
否则,如果没有办法获得更高的分辨率,如何检查并确保我的内置摄像头仅运行从VideoCapabilities属性中恢复的那些?
是什么让我相信我应该看到更多的结果:
我已使用DirectShowCaptureCapabilities-Win32.exe应用程序检查了DirectShow功能。它给了我更多的能力。例如我正在尝试设置的1280x960。
运行默认Windows应用程序(从平板电脑锁定屏幕)后,我看到更大分辨率的预览 - 可能是1280x960
从2.2.5版本库中的示例aForge.NET应用程序(Snapshot Maker)运行代码我获得了5种不同的功能,同时使用2.2.0版本的库运行相同的代码,为我提供了10种不同的功能
代码是:
videoDevices = new FilterInfoCollection( FilterCategory.VideoInputDevice );
...
videoDevice = new VideoCaptureDevice( videoDevices[devicesCombo.SelectedIndex].MonikerString );
videoCapabilities = videoDevice.VideoCapabilities;// that gives me not full list of capabilities
...
videoDevice.VideoResolution = videoCapabilities[videoResolutionsCombo.SelectedIndex];
答案 0 :(得分:2)
经过一番发现,这就是我所取得的成就
Aforge开发者告诉我:
列表可能不完整。特别是在这些现代平板电脑上 倾向于提供高分辨率,但每像素值的位数很小。
首先,所有12个bpp分辨率都被忽略,因为导致问题 VideoCaptureDevice。在修复之前,这些决议被忽略了。 其次,从代码中可以看出,只有最高的BPP才是 报道。所以,如果你有两个分辨率,如640x480x32和 640x480x24,然后只显示x32。
这是code。
此外,如果你们中的任何人有类似的问题 - 请注意,相机不仅通过流行的DirectShow界面,还有其他人或可能拥有自己的API来展示他们的功能。所以也试着看看这些。
我只想通过MediaCapture Api向我提供我想要实现的决议。但这专用于Windows Store Aps / UWP。 在Windows 8 / 8.1桌面应用程序中很容易找到使用它的方法。