import numpy as np
import cv2

def targx(MSK,low1,upp1,low2,upp2,img):
    Y=img.shape[0]-1;
    img1=np.copy(img)
    hsv=cv2.cvtColor(img1,cv2.COLOR_BGR2HSV)
    mask1=cv2.inRange(hsv,low1,upp1)
    if(MSK==2):
        mask3=cv2.inRange(hsv,low2,upp2)
        mask2=mask1 | mask3
    else:
        mask2=np.copy(mask1)
    img2=cv2.bitwise_and(img1, img1, mask=mask2)
    thresh=np.copy(mask2)
    contours,hierarchy=cv2.findContours(thresh, cv2.RETR_EXTERNAL,
                cv2.CHAIN_APPROX_NONE)
    #print('lencont=',len(contours))
    #for t in contours: print(cv2.contourArea(t))
    img3=np.copy(img2)
    box=[0,0,0,0]; lencontr=len(contours)
    if(lencontr != 0):
        cx=max(contours,key=cv2.contourArea);cax=cv2.contourArea(cx);
        cax=cv2.contourArea(cx)
        cv2.drawContours(img2,cx,-1,(0,255,0),2)
        x,y,w,h = cv2.boundingRect(cx)
        img3=cv2.rectangle(img3,(x,y),(x+w,y+h),(255,0,0),2)
        Ax=w*h; box=[x,y,w,h,cax,Ax]; 
        #print('lencontr=',lencontr,'max_c_area=',cax)
    else: print('lencontour=0')
    h2=np.hstack((img1,img2,img3))
    return box,h2

if __name__ == '__main__':
    from time import sleep
    print('targx as a main')
    low1=np.array([175, 150,   150])
    upp1=np.array([180,255,  255])
    low2=np.array([0, 150,   150])
    upp2=np.array([10,255,  255])
    MSK=1
    cap = cv2.VideoCapture(0)
    cap.set(cv2.CAP_PROP_FRAME_WIDTH,640)
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT,480)
    ret,img=cap.read()
    sleep(2)
    box,h2=targx(MSK,low1,upp1,low2,upp2,img)
    print(len(box),box)
    cv2.imshow('h2',h2)
    cv2.waitKey(0)


