我试图在Python项目中访问我笔记本电脑的内置红外摄像头(用于windows hello)。我可以使用OpenCV中的VideoCapture
类轻松访问正常的RGB摄像头,但无法找到访问红外摄像头的方法。我尝试向VideoCapture
类传递不同的索引,但只有“0”起作用,这是正常的摄像头。
有一些方法可以使用Windows API来实现这一点,但是我找不到在Python中访问它的方法。
有些人已经能够在Ubuntu上使用fswebcam访问windows hello相机。
有没有办法使用python访问红外摄像机?也许有一些方法可以使用pywin32与Windows API接口?任何帮助都可以开始使用。或者,有没有类似于Windows的fswebcam的东西可以让我做同样的事情?
3条答案
按热度按时间6tqwzwtp1#
您提供的示例似乎没有使用win32 API,而是使用了dotnet框架,特别是Windows.Media.Capture.Frames.MediaFrameSourceGroup类。
看起来你可以使用http://pythonnet.github.io/来访问dotnet框架,之后就可以将C#代码移植到Python了。
7ajki6be2#
我有点晚了,但也许我可以帮助别人。你可以通过WinRT访问红外摄像头。如果你想用Python来做,应该使用一个维护的WinRT替代品winsdk。
我遵循了这个教程:Process media frames with MediaFrameReader
我跳过并简化了一些代码部分,但它确实完成了这项工作。捕获的帧显示在OpenCV窗口中。您可以按“q”退出。
你必须注意脚本中的两个常量。
camera_image_width
和camera_image_height
定义了捕获帧的分辨率。对于我的硬件,它们是640和360。我不知道这是否是预览相机的标准分辨率,它们可能与其他硬件不同。你可以通过在第88行后调用software_bitmap.pixel_height
和software_bitmap.pixel_height
来确定它们。必须安装以下Python包:
以下是整个脚本:
字符串
祝你好运!
t30tvxxf3#
您需要访问WinRT API,而不是Win32 API。
使用这个库:https://github.com/Microsoft/xlang/tree/master/src/package/pywinrt/projection,你应该能够从你发布的代码中调用WinRT中必要的部分。