PYTHON - CV2:检查网络摄像头是否被其他应用程序使用

PYTHON - CV2 : Check if webcam is used by other app

我正在尝试开发代码以检查网络摄像头是否被其他应用(如 Zoom、Skype 等...)使用 python 和CV2.

例如,在 macOS 中,您可以在终端 lsof | grep "VDC" 中使用此命令来查看网络摄像头是否 运行。

所以我不想像这段代码那样打开它

import numpy as np
import cv2

cap = cv2.VideoCapture(0)
if(cap.isOpened()):
    print("Camera conntected")
else:
    print("Alert ! Camera disconnected")`

我只想检查它是否被其他应用程序打开或关闭并打印 'Running' 或 'Not running'.

我更喜欢使用 python,但如果有其他语言,请随意报告 ;)

即使它不完美,“最佳”解决方案应该是使用 try except 并在相机已打开的情况下将其强制 'bug'。 我尝试从 cv2 访问警告,但看起来有点困难。

这是适用于您的情况的代码:

import numpy as np
import cv2

cap = cv2.VideoCapture(0)
if(cap.isOpened()):
    print("Camera conntected")
else:
    print("Alert ! Camera disconnected")

number_itteration = 0
while cap.isOpened():
    try:
        ret, frame = cap.read()
        if number_itteration == 0:
            print(len(frame))
    except Exception as e:
        print('camera already used')
        break
    number_itteration += 1

出于隐私原因,目前 macOS 不允许用户查看哪个应用正在使用系统资源作为相机。

无论如何,您可以查看 this project 已经实现了您正在寻找的内容。也许,通过本机实现,您可以获取相机状态或以某种方式解决它。