Как узнать, работает ли моя веб-камера в данный момент? питон, opencv - PullRequest
0 голосов
/ 01 октября 2019

Как узнать, работает ли моя веб-камера в данный момент? Я попытался проверить «stream.read ()», потому что он возвращает «Нет», когда камера не активна. Но когда камера активна, 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()

Ответы [ 2 ]

1 голос
/ 01 октября 2019

read() возвращает как массив, так и логическое значение, чтобы указать, успешно ли было прочитано фрейм, r в вашем коде. Вместо этого используйте это значение:

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

документы

Проверяет, был ли прочитан кадр. Однако кадр может не читаться, даже когда камера активна. Лучший способ проверить, активна ли камера, это проверить:

open = stream.isOpened()

if open:
    print('Camera active')

документы

1 голос
/ 01 октября 2019

f - это массив numpy, и чтобы проверить, что это не None, вы должны проверить

 if f is None:

вместо

 if f == None: 

Когда f имеет массив, тогда высравните array == None, и он попытается сравнить None с каждым элементом в array, и это будет неоднозначно - поэтому он просит использовать any() или all()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...