Ошибка, но кажется, что все в порядке? cv2 - python - PullRequest
0 голосов
/ 02 августа 2020

Я следил за инструкциями на YouTube построчно, и это сработало. Поскольку это мой первый раз, когда я занимаюсь распознаванием

Я ничего не менял, и теперь это выдает ошибку.

import cv2

url = 'http//192.168.1.88:4747/video'
cap = cv2.VideoCapture(url)
face_cascade = cv2.CascadeClassifier("Lib\\site-packages\\cv2\\data\\haarcascade_frontalface_alt2.xml")

while True:
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # <----------THIS LINE IS GIVING ME THE ERROR
    face = face_cascade.detectMultiScale(gray, 1.5, 5)

    for(x,y,w,h) in faces:
        print(x,y,w,h)
        cv2.rectangle(gray, (x,y), (x+w, y+h), (255,0,0), 5)

    cv2.imshow('Window', frame)
    if cv2.waitKey(1) & 0xff == ord('q'):
        break

cv2.destroyAllWindows()

Я попытался удалить весь кодовый блок и переписать но я все равно получаю сообщение об ошибке. Это похоже на высказывание: только идиот делает одно и то же снова и снова, ожидая другого результата .

Вот ошибка:

Traceback (most recent call last):
  File "C:/Users/Tomas/PycharmProjects/Webcam Phone/venv/Webcam.py", line 9, in <module>
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(4.3.0) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

Ответы [ 2 ]

1 голос
/ 02 августа 2020

Вы видите, что происходит, когда None передается на cvtColor()

Вам нужен либо test ret, либо frame is not None. Если вы используете веб-камеру ноутбука, по моему опыту, нередко требуется несколько кадров, чтобы камера «разогревалась» и возвращала изображения.

0 голосов
/ 03 августа 2020

CREDIT TO - mkrieger & fmw42 - их комментарии помогли мне понять, почему ничего не возвращается.

Отсутствует : в URL

Вызвал функцию cap = cv2.VideoCapture(url) не получать кадры с веб-камеры, поэтому ret, frame = cap.read() только что вернул False и None

...