我怎么知道我的网络摄像头当前正在工作? python,opencv

问题描述 投票:0回答:2

我怎么知道我的网络摄像头当前正在工作?我试图检查“ stream.read()”,因为它在相机不活动时返回“ None”。但是,当摄像机处于活动状态时,“ stream.read()”将返回一个数组,并且会出现错误“具有多个元素的数组的真值不明确。请使用a.any()或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()
python opencv webcam
2个回答
1
投票

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

 if f is None:

而不是

 if f == None: 

[当f具有数组时,您将比较array == None,并尝试将Nonearray中的每个元素进行比较,并且它是模棱两可的-因此它要求使用any()all()


1
投票

read()返回一个数组和一个布尔值,以指示是否成功读取了帧,即代码中的r。使用该值代替:

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

docs

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

open = stream.isOpened()

if open:
    print('Camera active')

docs

© www.soinside.com 2019 - 2024. All rights reserved.