我如何知道我的网络摄像头当前是否正常工作? python、opencv

How do I know if my webcam is currently working? python, opencv

我如何知道我的网络摄像头当前是否正常工作?我试图检查“ stream.read () ”,因为它 returns "None" 当相机未处于活动状态时。但是当相机处于活动状态时“stream.read ()”returns 一个数组,我得到一个错误 "The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()"。我该如何解决? 我的代码:

import cv2
import time
from tkinter import *

stream = cv2.VideoCapture(0)
time.sleep(10)
while True:

    r, f = stream.read ()
    a=f
    print(a)
    if a==None:
        print("No active")
    else:
        print("Active")

    cv2.imshow('IP Camera stream',f)
    # f = imutils.resize(f, width=400)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cv2.destroyAllWindows()

f 是 numpy 的数组,要检查它不是 None 你必须检查

 if f is None:

而不是

 if f == None: 

f 有数组时,你比较 array == None 并且它试图将 Nonearray 中的每个元素进行比较并且它是不明确的 - 所以它要求使用any()all()

read() returns 一个数组和一个布尔值,表示它是否成功读取一个帧,代码中的 r。请改用该值:

if r == False:
        print("No frame read")
    else:
        print("Succes")

docs

检查是否读取了帧。但是,即使相机处于活动状态,也可能无法读取帧。检查相机是否处于活动状态的最佳方法是检查:

open = stream.isOpened()

if open:
    print('Camera active')

docs