def stretch(src, segment):
    (img_h, img_w) = src.shape[:2]
    cut = (img_w // segment)
    thresh = ((cut * 4) // 5)
    src_pts = list()
    dst_pts = list()
    src_pts.append([0, 0])
    src_pts.append([img_w, 0])
    src_pts.append([img_w, img_h])
    src_pts.append([0, img_h])
    dst_pts.append([0, 0])
    dst_pts.append([img_w, 0])
    dst_pts.append([img_w, img_h])
    dst_pts.append([0, img_h])
    half_thresh = (thresh * 0.5)
    for cut_idx in np.arange(1, segment, 1):
        move = (np.random.randint(thresh) - half_thresh)
        src_pts.append([(cut * cut_idx), 0])
        src_pts.append([(cut * cut_idx), img_h])
        dst_pts.append([((cut * cut_idx) + move), 0])
        dst_pts.append([((cut * cut_idx) + move), img_h])
    trans = WarpMLS(src, src_pts, dst_pts, img_w, img_h)
    dst = trans.generate()
    return dst
def stretch(src, segment):
    (img_h, img_w) = src.shape[:2]
    cut = (img_w // segment)
    thresh = ((cut * 4) // 5)
    src_pts = list()
    dst_pts = list()
    src_pts.append([0, 0])
    src_pts.append([img_w, 0])
    src_pts.append([img_w, img_h])
    src_pts.append([0, img_h])
    dst_pts.append([0, 0])
    dst_pts.append([img_w, 0])
    dst_pts.append([img_w, img_h])
    dst_pts.append([0, img_h])
    half_thresh = (thresh * 0.5)
    for cut_idx in np.arange(1, segment, 1):
        move = (np.random.randint(thresh) - half_thresh)
        src_pts.append([(cut * cut_idx), 0])
        src_pts.append([(cut * cut_idx), img_h])
        dst_pts.append([((cut * cut_idx) + move), 0])
        dst_pts.append([((cut * cut_idx) + move), img_h])
    trans = WarpMLS(src, src_pts, dst_pts, img_w, img_h)
    dst = trans.generate()
    return dst