def plot_colorspaces(rgb,name):
    r = rgb[:,:,0]
    req = equalizeHist(r)
    g = rgb[:,:,1]
    b = rgb[:,:,2]
    dsp_images= [(name+'_rgb',rgb),('r',r),('req',req),('g',g),('b',b)]
    plot_images(dsp_images)
    plt.show()
    
    hls,h,l,s = rgb2hls(rgb)
    seq = cv2.equalizeHist(s)
    dsp_images= [(name+'_hls',hls),('h',h),('l',l),('s',s),('seq',seq)]
    plot_images(dsp_images)
    plt.show()
    
    hsv,h,s,v = rgb2hsv(rgb)
    veq = cv2.equalizeHist(v)
    dsp_images = [(name+'_hsv',hsv),('h',h),('s',s),('v',v),('veq',veq)]
    plot_images(dsp_images)
    plt.show()
    
    lab,l,a,b = rgb2lab(rgb)
    leq = cv2.equalizeHist(l)
    beq = cv2.equalizeHist(b)
    dsp_images= [(name+'_lab',lab),('l',l),('leq',leq),('a',a),('b',b),('beq',beq)]
    plot_images(dsp_images)
    plt.show()
def plot_rsvl(rgb, name):
    r = rgb[:,:,0]
    req = cv2.equalizeHist(r)
    rmask = mask(req, (252, 255))
    dsp_images = [(name+'_req',req),('rmask', rmask)]
    
    hls,h,l,s = rgb2hls(rgb)
    seq = cv2.equalizeHist(s)
    smask = mask(seq, (253, 255))
    dsp_images += [(name+'_seq',seq),('smask', smask)]
    
    hsv,h,s,v = rgb2hsv(rgb)
    veq = cv2.equalizeHist(v)
    vmask = mask(veq, (252, 255))
    dsp_images += [(name+'_veq',veq),('vmask', vmask)]
    
    lab,l,a,b = rgb2lab(rgb)
    leq = cv2.equalizeHist(l)
    lmask = mask(leq, (252, 255))
    dsp_images += [(name+'_leq',leq),('lmask', lmask)]
    
    comb = np.zeros_like(r)
    comb[(rmask==1)|(vmask==1)|(lmask==1)] =1
    dsp_images += [('comb',comb)]
    plot_images(dsp_images)
    plt.show()
def combine1(img, gray):
    grdx = gradient_thresh(gray, "x", 5, (30,100))

    _,_,l,s = rgb2hls(img)
    maskS = mask(s,(170,255))
    maskL = mask(l,(10,255))

    comb = np.zeros_like(maskS)
    comb[((maskS == 1)&(maskL==1)) | (grdx == 1)] = 1
    
#     return [('grdx',grdx),('maskS',maskS),('grdx | maskS',comb)]
    return [('grdx | maskS',comb)]
def combine2(img, gray):
    grdx = gradient_thresh(gray, "x", 5, (20,100))
    grdy = gradient_thresh(gray, "y", 5, (20,100))
    mag = gradient_mag_thresh(gray, ksize=7, mask_range=(30,100))
    dir = gradient_dir_thresh(gray, ksize=9, mask_range=(0.7,1.3))

    hls,h,l,s = rgb2hls(img)
    maskS = mask(s,(170,255))
    maskH = mask(h,(15,100))

    comb = np.zeros_like(maskS)
    comb[((maskS == 1)&(maskH==1)) | (grdx == 1)] = 1
    
    return ('grdx|(maskS & maskH)',comb)
def combine3(img, gray):
    grdx = gradient_thresh(gray, "x", 5, (20,100))
    grdy = gradient_thresh(gray, "y", 5, (20,100))
    mag = gradient_mag_thresh(gray, ksize=5, mask_range=(30,100))
    dir = gradient_dir_thresh(gray, ksize=5, mask_range=(1.0,1.7))

    hls,h,l,s = rgb2hls(img)
    maskS = mask(s,(150,255))
    maskH = mask(h,(15,20))
    maskL = mask(l,(30,40))

    comb = np.zeros_like(maskS)
    comb[((maskH == 1))] = 1
    
    return ('(yellowish&dir)',comb)
def lanes_rsvl(rgb):
    r = rgb[:,:,0]
    req = cv2.equalizeHist(r)
    rmask = mask(req, (252, 255))
    
    hls,h,l,s = rgb2hls(rgb)
    seq = cv2.equalizeHist(s)
    smask = mask(seq, (252, 255))
    
    hsv,h,s,v = rgb2hsv(rgb)
    veq = cv2.equalizeHist(v)
    vmask = mask(veq, (252, 255))
    
    lab,l,a,b = rgb2lab(rgb)
    leq = cv2.equalizeHist(l)
    lmask = mask(leq, (252, 255))
    beq = cv2.equalizeHist(b)
    bmask = mask(beq,(252,255))
    comb = np.zeros_like(r)
    comb[(rmask==1)|(vmask==1)|(lmask==1)|(bmask==1)] =1

    return comb