def test_find_haar_features():
    img = Factory.Image(testimage)
    img1 = img.copy()
    face = HaarCascade("face.xml")  # old HaarCascade
    f = img.find_haar_features(face)
    f2 = img1.find_haar_features("face_cv2.xml")  # new cv2 HaarCascade
    assert len(f) > 0
    assert len(f2) > 0
    f.draw()
    f2.draw()
    f[0].width
    f[0].height
    f[0].length
    f[0].area

    results = [img, img1]
    name_stem = "test_find_haar_features"
    perform_diff(results, name_stem)

    # incorrect cascade name
    f3 = img.find_haar_features(cascade="incorrect_cascade.xml")
    assert_equals(f3, None)

    # incorrect cascade object
    f4 = img.find_haar_features(cascade=img1)
    assert_equals(f4, None)

    # Empty image
    img2 = Factory.Image((100, 100))
    f5 = img2.find_haar_features("face_cv2.xml")
    assert_equals(f5, None)
def test_anonymize():
    img = Factory.Image(source="lenna")
    anon_img = img.anonymize()

    # provide features
    anon_img1 = img.anonymize(features=["face.xml", "profile.xml"])

    # match both images
    assert_equals(anon_img.data, anon_img1.data)

    # transform function
    def transform_blur(img, rect):
        np_array = img
        x, y, w, h = rect
        crop_np_array = np_array[y:y + h, x:x + w]
        crop_img = Factory.Image(array=crop_np_array)
        blur_img = crop_img.blur((15, 15))
        blur_np_array = blur_img
        np_array[y:y + h, x:x + w] = blur_np_array
        return Factory.Image(array=np_array)

    # apply tranform function
    anon_img2 = img.anonymize(transform=transform_blur)

    perform_diff([anon_img1, anon_img2], "test_anonymize")
def test_find_haar_features():
    img = Factory.Image(testimage)
    img1 = img.copy()
    face = HaarCascade("face.xml")  # old HaarCascade
    f = img.find_haar_features(face)
    f2 = img1.find_haar_features("face_cv2.xml")  # new cv2 HaarCascade
    assert len(f) > 0
    assert len(f2) > 0
    f.draw()
    f2.draw()
    f[0].width
    f[0].height
    f[0].length
    f[0].area

    results = [img, img1]
    name_stem = "test_find_haar_features"
    perform_diff(results, name_stem)

    # incorrect cascade name
    f3 = img.find_haar_features(cascade="incorrect_cascade.xml")
    assert_equals(f3, None)

    # incorrect cascade object
    f4 = img.find_haar_features(cascade=img1)
    assert_equals(f4, None)

    # Empty image
    img2 = Factory.Image((100, 100))
    f5 = img2.find_haar_features("face_cv2.xml")
    assert_equals(f5, None)
def test_anonymize():
    img = Factory.Image(source="lenna")
    anon_img = img.anonymize()

    # provide features
    anon_img1 = img.anonymize(features=["face.xml", "profile.xml"])

    # match both images
    assert_equals(anon_img.data, anon_img1.data)

    # transform function
    def transform_blur(img, rect):
        np_array = img
        x, y, w, h = rect
        crop_np_array = np_array[y:y+h, x:x+w]
        crop_img = Factory.Image(array=crop_np_array)
        blur_img = crop_img.blur((15, 15))
        blur_np_array = blur_img
        np_array[y:y+h, x:x+w] = blur_np_array
        return Factory.Image(array=np_array)

    # apply tranform function
    anon_img2 = img.anonymize(transform=transform_blur)

    perform_diff([anon_img1, anon_img2], "test_anonymize")
def test_barcode_find_barcode():
    img = Factory.Image(BARCODE_IMAGE)
    featureset = img.find_barcode()
    f = featureset[0]
    img_crop = f.crop()
    result = [img_crop]
    name_stem = "test_barcode_find_barcode"
    perform_diff(result, name_stem, 0.0)
def test_barcode():
    img = Factory.Image(BARCODE_IMAGE)
    barcode = img.find_barcode()[0]
    repr_str = "%s.%s at (%d,%d), read data: %s" % (
            barcode.__class__.__module__, barcode.__class__.__name__, barcode.x, barcode.y,
        barcode.data)
    assert_equals(barcode.__repr__(), repr_str)
    barcode.draw(color=(255, 0, 0), width=5)
    assert_equals(barcode.length(),[262.0])
    assert_almost_equals(barcode.get_area(), 68644.0)
    perform_diff([img], "test_barcode", 0.0)