首页 > 解决方案 > 如何使用 open cv 在窗口中打印消息

问题描述

我正在研究人脸检测用例,并希望在框架中未检测到人脸时打印一条消息,并在检测到人脸时绘制边界框。我正在使用 open-cv 到目前为止这是我的代码,请让我知道需要进行哪些更改。

import cv2
cascPath = 'haarcascade_frontalface_dataset.xml' 
faceCascade = cv2.CascadeClassifier(cascPath)
video_capture = cv2.VideoCapture(0)  
while True :
    _, frame = video_capture.read(0)
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    # cv2.imshow("face detection", frame)

    faces = faceCascade.detectMultiScale(
        gray,
        scaleFactor=1.1,
        minNeighbors=5,
        minSize=(30, 30),
        flags=cv2.CASCADE_SCALE_IMAGE
    )
    # Draw a rectangle around the faces
    for (x, y, w, h) in faces:
        if w == 0:
            cv2.putText(frame,'No face',(0,130), font, 1, (200,255,155))
        else:
            cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)

    # Display the resulting frame in browser
    cv2.imshow('Video', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything is done, release the capture
video_capture.release()
cv2.destroyAllWindows()

标签: pythonopencvcomputer-vision

解决方案


我想出了解决办法,如果你想看,可以通过它,只需在for循环之前添加这个if语句,如果没有检测到人脸,它会在窗口中写入no face

if len(faces) == 0:
    cv2.putText(frame,'No face',(0,130), 4,1, (200,255,155))

推荐阅读