Professional Documents
Culture Documents
Seam
Seam
import cv2
import argparse
from scipy import ndimage as ndi
import os
def fwd_energy(im):
h, w = im.shape[:2]
im = cv2.cvtColor(im.astype(np.uint8), cv2.COLOR_BGR2GRAY).astype(np.float64)
energy_fn = np.zeros((h, w))
m = np.zeros((h, w))
U = np.roll(im, 1, axis=0)
L = np.roll(im, 1, axis=1)
R = np.roll(im, -1, axis=1)
cU = np.abs(R - L)
cL = np.abs(U - L) + cU
cR = np.abs(U - R) + cU
for i in range(1, h):
mU = m[i-1]
mL = np.roll(mU, 1)
mR = np.roll(mU, -1)
mULR = np.array([mU, mL, mR])
cULR = np.array([cU[i], cL[i], cR[i]])
mULR += cULR
argmins = np.argmin(mULR, axis=0)
m[i] = np.choose(argmins, mULR)
energy_fn[i] = np.choose(argmins, cULR)
return energy_fn
if __name__ == '__main__':
ap = argparse.ArgumentParser()
group = ap.add_mutually_exclusive_group(required=True)
group.add_argument("-resize", action='store_true')
ap.add_argument("-im", required=True)
ap.add_argument("-out" , required=True)
ap.add_argument("-dy", type=int, default=0)
ap.add_argument("-dx", type=int, default=0)
ap.add_argument("-visualization", action='store_true')
args = vars(ap.parse_args())
input_directory = os.path.abspath(args["im"])
output_directory = os.path.abspath(args["out"])
process_images_in_directory(input_directory, output_directory)