错误,但似乎没有错? CV2-python

Error, but nothing seems to be wrong? cv2 - python

我在 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'

您将看到当 None 传递给 cvtColor()

时会发生什么

您需要测试 ret,或 frame is not None。如果您使用的是笔记本电脑网络摄像头,根据我的经验,相机拍摄 'warm up' 和 return 图像需要几帧的情况并不少见。

归功于 - mkrieger & fmw42 - 他们的评论帮助我弄清楚了为什么什么都没有返回。

URL

中缺少 :

导致cap = cv2.VideoCapture(url)函数无法从网络摄像头接收任何帧,所以ret, frame = cap.read()只返回FalseNone