# Fhsv.py
import cv2
import numpy as np

def sh0(win,img): cv2.imshow(win,img);
def cw(k): cv2.waitKey(k)

#----------------------------------------------------------
def hsvcolor(img,XC,YC,R):
    Lx=img.shape[1]; Ly=img.shape[0]; #XC=int(Lx/2); YC=int(Ly/2); R=Lx//40;
    img1=np.copy(img)
    x1=XC-R; x2=XC+R; y1=YC-R; y2=YC+R
    img2=img[y1:y2,x1:x2,:]
    cv2.rectangle(img1,(x1,y1),(x2,y2),(255,255,255),4)
    h=[0,0,0]
    hsv=cv2.cvtColor(img2, cv2.COLOR_BGR2HSV)
    for i in range(3): h[i]=int(np.average(hsv[:,:,i]))
    return h,img1
#--------------------------------------------------------

Lx=640; Ly=480; F=8; Lx2=int(Lx/F); Ly2=int(Ly/F); t=0
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, Lx)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, Ly)
XC=int(Lx*0.5); YC=int(Ly*0.5); R=Lx//40;
for j in range(6):
    ret,frame=cap.read()
    h,img1=hsvcolor(frame,XC,YC,R)
    print(j,h)
    cv2.imshow('img1',img1); cv2.waitKey(0)
    if(cv2.waitKey(2000) & 0xFF == ord('q')): break
lowT=np.array([h[0]-10,h[1]-20,50]);
uppT=np.array([h[0]+10,h[1]+40,255])

while(t<2501 and cap.isOpened()):
    t+=1; ret,frame=cap.read(); imgb=np.copy(frame)
    if ret == False: break
    img2=cv2.resize(frame,(Lx2,Ly2)); sh0('img2',img2)
    #.........................................
    hsv=cv2.cvtColor(frame,cv2.COLOR_BGR2HSV);
    mask1=cv2.inRange(hsv,lowT,uppT)
    imgc=cv2.bitwise_and(imgb,imgb,mask=mask1)
    maskc=cv2.cvtColor(mask1,cv2.COLOR_GRAY2BGR)
    hst=np.hstack((frame,maskc,imgc))
    hst2=cv2.resize(hst,(int(Lx*3*0.8),int(Ly*0.8)))
    sh0('hst2',hst2); 
    #.........................................
    if(cv2.waitKey(2) & 0xFF == ord('q')): break
cap.release()
cv2.destroyAllWindows()