def test_detect_face_and_smile_on_picture(self): "Test the detection of a smile in a face on a static picture" image = cv2.imread(ASSETS_FOLDER + self.TRUMP_PHOTO_SMILE, 0) face_cascade_object = cv2.CascadeClassifier(self.CASCADE_FOLDER + self.FACE_CASCADE_MODEL) smile_cascade_object = cv2.CascadeClassifier(self.CASCADE_FOLDER + self.SMILE_CASCADE_MODEL) faces = [] smiles = [] for i in face_recognition.find_cascade(face_cascade_object, image, draw=True, draw_frame=image): faces.append(i) ROI = image[i[1]:i[1] + i[3], i[0]:i[0] + i[2]] ROI = ROI[len(ROI) // 2:] for j in face_recognition.find_cascade(smile_cascade_object, ROI, draw=True, draw_frame=image, start_x=i[0], start_y=i[1] + len(ROI)): smiles.append(j) self.assertGreaterEqual( len(faces), 1, "ERROR(test_detect_face_and_smile_on_picture): No faces found") self.assertGreaterEqual( len(smiles), 1, "ERROR(test_detect_face_and_smile_on_picture): No smiles found")
def test_process_images_both(self): # average = 0.06 seconds """process face recognition and the contours of 100 images, and calculate the average processing time""" path_to_image_contour = "flower_contour_crop.jpg" path_to_image_cascade = "face_trump.jpg" # preparation SETTINGS = (19, 35, 225, 255, 82, 255) cascade_object = cv2.CascadeClassifier( CASCADE_FOLDER + FACE_CASCADE_MODEL) faces = [] start = time.time() for _ in range(AMOUNT): image = cv2.imread(ASSETS_FOLDER + path_to_image_contour) contours = face_recognition.find_contour( image, 2, pos=True, settings=SETTINGS, return_all_contours=True) filtered_contour_list = face_recognition.filter_contour(contours) image = cv2.imread(ASSETS_FOLDER + path_to_image_cascade, 0) for i in face_recognition.find_cascade(cascade_object, image, draw=True, draw_frame=image): faces.append(i) end = time.time() average_time = PerformanceTest.calculate_average_time( start, end, AMOUNT) self.assertLessEqual( average_time, THRESHOLD, "The average time was %f seconds, but needed to be at least %f seconds" % (average_time, THRESHOLD))
def test_detect_smile_on_picture(self): "Test the detection of a smile on a static picture" image = cv2.imread(ASSETS_FOLDER + self.TRUMP_PHOTO_SMILE, 0) cascade_object = cv2.CascadeClassifier(self.CASCADE_FOLDER + self.SMILE_CASCADE_MODEL) smiles = [] for i in face_recognition.find_cascade(cascade_object, image, draw=True, draw_frame=image): smiles.append(i) self.assertGreaterEqual( len(smiles), 1, "ERROR(test_detect_smile_on_picture): No Smiles found")
def test_detect_face_on_picture_false_postives(self): "Test the detection of a face on a static picture on false postives" image = cv2.imread(ASSETS_FOLDER + self.TRUMP_PHOTO, 0) cascade_object = cv2.CascadeClassifier(self.CASCADE_FOLDER + self.FACE_CASCADE_MODEL) faces = [] for i in face_recognition.find_cascade(cascade_object, image, draw=True, draw_frame=image): faces.append(i) self.assertGreaterEqual( len(faces), 1, "ERROR(test_detect_face_on_picture_false_postives): No faces found" ) self.assertEqual( len(faces), 1, "ERROR(test_detect_face_on_picture_false_postives): To many faces detected" )
def test_process_images_cascade(self): # average = 0.05 seconds """execute face recognition on a 100 images, and calculate the average processing time""" path_to_image = "face_trump.jpg" # preparation cascade_object = cv2.CascadeClassifier( CASCADE_FOLDER + FACE_CASCADE_MODEL) faces = [] start = time.time() for _ in range(AMOUNT): image = cv2.imread(ASSETS_FOLDER + path_to_image, 0) for i in face_recognition.find_cascade(cascade_object, image, draw=True, draw_frame=image): faces.append(i) end = time.time() average_time = PerformanceTest.calculate_average_time( start, end, AMOUNT) self.assertLessEqual( average_time, THRESHOLD, "The average time was %f seconds, but needed to be at least %f seconds" % (average_time, THRESHOLD))