Пример #1
0
def objectRemoval(image, remove_mask=None, preserve_mask=None, nn=0, nm=0, rmask=False, pmask=False):
    img = image.copy()
    n,m = image.shape[:2]

    if rmask:
        nn, nm = Basics.maskSize(remove_mask)

    if nn < nm:   #Eliminamos las filas

        print("\nNumero de seams horizontales a eliminar: ", nn)
        #Rotamos
        img = np.rot90(img, k=-1, axes=(0, 1))

        if rmask:
            remove_mask = np.rot90(remove_mask, k=-1, axes=(0, 1))

        if pmask:
            preserve_mask = np.rot90(preserve_mask, k=-1, axes=(0, 1))


        #Eliminamos las horizontales que sobren
        for i in range(abs(nn)):
            print("Eliminamos ", i)
            a, b, path = Basics.verticalSeam(img, energias.forwardEnergy, remove_mask, preserve_mask, rmask, pmask)
            img = Basics.removeSeam(img, path)


            if rmask:
                remove_mask = Basics.removeSeam(remove_mask, path)

            if pmask:
                preserve_mask = Basics.removeSeam(preserve_mask, path)


        #Rotamos
        return np.rot90(img, k=1, axes=(0, 1))
#        return img
    else:

        print("\nNumero de seams verticales a eliminar: ", abs(nm))
        #Eliminamos las verticales que sobren
        for i in range(abs(nm)):
            print("Eliminamos", i)
            a, b, path = Basics.verticalSeam(img, energias.forwardEnergy, remove_mask, preserve_mask, rmask, pmask)
            img = Basics.removeSeam(img, path)

            if rmask:
                remove_mask = Basics.removeSeam(remove_mask, path)

            if pmask:
                preserve_mask = Basics.removeSeam(preserve_mask, path)

        return img