import numpy as np
import cv2
low_rd = np.array([0,  0,   150])
upp_rd = np.array([255,40,  255])

def floor(img):
    img2=cv2.resize(img,(160,120))
    hsv=cv2.cvtColor(img2,cv2.COLOR_BGR2HSV); h=np.copy(hsv)
    for t in range(160): print(t,h[119,t],h[110,t],h[100,t],h[80,t],h[60,t])
    mask_rd=cv2.inRange(hsv,low_rd,upp_rd)
    gray=cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
    blurred = cv2.GaussianBlur(gray, (5,5), 0); b=np.copy(blurred)
    #for t in range(160): print(t,b[119,t],b[110,t],b[100,t],b[80,t],b[60,t])
    binaryIMG = cv2.Canny(blurred, 40, 150)  #70 shadow
    #thr1=cv2.threshold(blurred,127,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)[1]
    thr1=cv2.threshold(blurred,127,255,cv2.THRESH_BINARY)[1]
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5,5))
    op1=cv2.morphologyEx(thr1,cv2.MORPH_OPEN,kernel,iterations=3)
    img3=cv2.bitwise_and(img2, img2, mask=op1)
    #---for floor----------
    imgA=np.copy(img2) # floor with contour
    #contour1,hierarchy=cv2.findContours(thr1, cv2.RETR_EXTERNAL,
    contour1,hierarchy=cv2.findContours(op1, cv2.RETR_EXTERNAL,
                cv2.CHAIN_APPROX_NONE)
    c1x=max(contour1, key = cv2.contourArea)
    cv2.drawContours(imgA,c1x,-1,(255,125,0),2)
    h1=np.hstack((mask_rd,gray,blurred,binaryIMG,thr1,op1))
    h2=np.hstack((imgA,img2,img3))
    cv2.imshow('h1',h1)
    cv2.imshow('h2',h2)
    cv2.waitKey(0)


if __name__ == '__main__':
    from time import sleep
    cap = cv2.VideoCapture(0)
    cap.set(cv2.CAP_PROP_FRAME_WIDTH,640)
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT,480)
    sleep(2)
    for j in range(10):
        ret,img=cap.read()
        floor(img)


