如何使用 opencv 和 python 编程来缩放罗技网络摄像头 c930e?

How to zoom the logitech webcam c930e using opencv with python programming?

我正在尝试使用罗技 c930e 网络摄像头对多人进行人脸识别。所以我想在 python 中使用 opencv 编程来缩放 c930e 网络摄像头。

我曾尝试调整图像大小,但我希望使用 python 编程将相机缩放并聚焦在固定距离上。

我希望在一台计算机上连接多个网络摄像头,并且所有网络摄像头使用编程具有不同的固定缩放值。

Logitech c930e 网络摄像头只是一个外部硬件,如果你想让它使用 python 编程进行缩放和对焦,你需要一个库来控制网络摄像头(不幸的是,没有任何库可以控制它) .没有库控制网络摄像头,只能通过软件方式进行缩放和对焦,即使用opencv,没有其他可用的方式。或者你可以得到一台可编程相机,比如佳能数码相机,然后使用库 canon-remote 来控制它。

根据其 specs, the C930e is UVC 兼容(与大多数网络摄像头一样),它很可能允许通过 UVC 控制缩放级别。

要了解相机通过 UVC 提供的控制,在 Ubuntu 上,您可以使用 v4l2-ctl,它在包 v4l-utils 中。这是 Microsoft LifeCam Cinema 的 v4l2-ctl -d 0 -l 输出的一部分:

             ...
             focus_absolute (int)    : min=0 max=40 step=1 default=0 value=8
                 focus_auto (bool)   : default=0 value=0
              zoom_absolute (int)    : min=0 max=10 step=1 default=0 value=0

您可以更改控件,例如 v4l2-ctl -d 0 -c zoom_absolute=10

从Python开始做这个,我用的是subprocess.check_output(). The utility function I wrote for getting and setting V4L2 controls is on GitHub and has a bunch of additional functionality such as handling of default values, multiple controls, and multiple batches of controls, which makes the code more intricate than a simple "change zoom level" example would be. (The function is part of SkinnerTrax, a real-time tracker for Drosophila I wrote.) There is also pyuvc,貌似比较跨平台,但是没试过