Search code examples
pythonopencvmachine-learningopencv3.0face-detection

How can I add "a human face was found" if a face is detected?


this is the code I wrote, I want to be able to show on the terminal how many faces was found, I tried some methods (if face_coordinates: cv2.imshow("a human was found", webcam) and others but nothing is working

import cv2

# load some pre-trained data on front faces (haarcascade algorithm)
trained_face_data = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

# to capture video from webcam
webcam = cv2.VideoCapture(1)

# iterate forever over frames
while True:
    successful_frame_read, frame = webcam.read()
    #flip the video (mirror)
    flipped_frame = cv2.flip(frame, 1)
    # convert to grayscale
    grayscaled_img = cv2.cvtColor(flipped_frame, cv2.COLOR_BGR2GRAY)
    # detect faces
    face_coordinates = trained_face_data.detectMultiScale(grayscaled_img)
    # show rectangles around the face
    for (x, y, w, h) in face_coordinates:
        cv2.rectangle(flipped_frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
    # show the webcam
    cv2.imshow("Fadi's face detector system", flipped_frame)
    key = cv2.waitKey(1)
    # exit app if Q or q are pressed
    if key==81 or key==113:
        break
    if face_coordinates:  # python types can be coerced to boolean
    cv2.imshow("Human was found!", webcam)
    continue
    else:
        cv2.imshow("no human was found...", webcam)
        continue

webcam.release()

Solution

  • In order to print the number of faces detected in the terminal i tried counting different faces detected and based on that you can print the number of humans found in the terminal while detecting. I have made some small changes in your code as below.

    import cv2
    
    # load some pre-trained data on front faces (haarcascade algorithm)
    trained_face_data = cv2.CascadeClassifier(cv2.data.haarcascades +'haarcascade_frontalface_default.xml')
    
    # to capture video from webcam
    webcam = cv2.VideoCapture(0)
    
    # iterate forever over frames
    while True:
        successful_frame_read, frame = webcam.read()
        #flip the video (mirror)
        flipped_frame = cv2.flip(frame, 1)
        # convert to grayscale
        grayscaled_img = cv2.cvtColor(flipped_frame, cv2.COLOR_BGR2GRAY)
        # detect faces
        face_coordinates = trained_face_data.detectMultiScale(grayscaled_img)
        count=0
        # show rectangles around the face
        for (x, y, w, h) in face_coordinates:
            count=count+1
            cv2.rectangle(flipped_frame, (x, y), (x+w, y+h), (0, 255, 0), 3)
    
        # show the webcam
        cv2.imshow("Fadi's face detector system", flipped_frame)
        key = cv2.waitKey(1)
        # exit app if Q or q are pressed
        if key==81 or key==113:
            break
        # python types can be coerced to boolean
        if count==1:
            print(count," human found")
        elif count>0:
            print(count," humans found")
        else:
            print("No human was found")
    webcam.release()