CV2:CV2颜色()

cv2 : cv2Color()

我正在尝试进行人脸检测

import cv2
import sys

faceCascade = cv2.CascadeClassifier(r"haarcascade_frontalface_default.xml")

video_capture = cv2.VideoCapture(0)

while True:

    ret, frame = video_capture.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    faces = faceCascade.detectMultiScale(
        gray,
        scaleFactor=1.1,
        minNeighbors=5,
        minSize=(30, 30),
        # cv2.CASCADE_SCALE_IMAGE
        flags=cv2.CASCADE_SCALE_IMAGE
    )

    for (x, y, w, h) in faces:
        cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)

    cv2.imshow('Video', frame)

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

video_capture.release()
cv2.destroyAllWindows()

但每次我 运行 程序都会收到此错误:

cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\pip-req-build-pz4stnv8\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

即使我显示隐藏项目,用户中也没有 appveyor 文件夹,所以我无法访问它。

video_capture.read() 不保证 return 有效帧。

ret 是 True 还是 False 取决于帧是否被成功读取。在尝试进一步处理框架之前,您应该检查此值——例如添加:

if not ret:
    continue

错误消息中的路径是用于构建 OpenCV 的机器上源代码的路径,因此不一定是您机器上的真实路径。这没什么好担心的。

谢谢,但现在我收到了这个错误:

cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\pip-req-build-   zsozjuva\opencv\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale'

[ WARN:0] global C:\Users\appveyor\AppData\Local\Temp\pip-req-build-zsozjuva\opencv\modules\videoio\src\cap_msmf.cpp (435) `anonymous-namespace'::SourceReaderCB::~SourceReaderCB terminating async callback