def onrect(self, rect):
        #print "onrect enterd:",rect
        self.lk_ready = True
        frame_gray = cv2.cvtColor(self.frame, cv2.COLOR_BGR2GRAY)
        frame_gray = cv2.equalizeHist(frame_gray)

        self.old_gray = frame_gray.copy()

        self.patch = self.old_gray[rect[1]:rect[3],rect[0]:rect[2]]
        self.w = rect[2]-rect[0]
        self.h = rect[3]-rect[1]
        #cv2.imshow('patch',self.patch)
        #cv2.waitKey(10)
        mask = cv2.createHanningWindow((self.w,self.h),cv2.CV_32F)
        self.patch = np.uint8(self.patch*mask)

        self.p0 = getUniformPoints(self.old_gray,rect[:2],rect[2:],100)
#        self.p0 = cv2.goodFeaturesToTrack(self.patch, mask = None, **feature_params)
        if len(self.p0)==0:
            self.lk_ready = False
            print "len p0:",len(self.p0)
##        else:
##            for i in xrange(len(self.p0)):
##                self.p0[i][0][0] = self.p0[i][0][0] + rect[0]
##                self.p0[i][0][1] = self.p0[i][0][1] + rect[1]
        tracker = MOSSE(frame_gray, rect)
        self.trackers.append(tracker)
# Parameters for lucas kanade optical flow
lk_params = dict(winSize=(15, 15),
                 maxLevel=2,
                 criteria=(cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10,
                           0.03))

# Create some random colors
color = np.random.randint(0, 255, (100, 3))

# Take first frame and find corners in it
ret, old_frame = cap.read()

old_gray = cv2.cvtColor(old_frame, cv2.COLOR_BGR2GRAY)
old_gray = cv2.equalizeHist(old_gray)

p0 = getUniformPoints(old_gray, (303, 203), (449, 363), 500)

#p0 = cv2.goodFeaturesToTrack(old_gray, mask = None, **feature_params)
#p0 = old_gray()

# Create a mask image for drawing purposes
mask = np.zeros_like(old_frame)
frame_idx = 0
detect_interval = 2

while (1):
    ret, frame = cap.read()
    frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    frame_gray = cv2.equalizeHist(frame_gray)
    #print "len p0:",len(p0)
    if p0 is None:
# Parameters for lucas kanade optical flow
lk_params = dict( winSize  = (15,15),
                  maxLevel = 2,
                  criteria = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 0.03))

# Create some random colors
color = np.random.randint(0,255,(100,3))

# Take first frame and find corners in it
ret, old_frame = cap.read()

old_gray = cv2.cvtColor(old_frame, cv2.COLOR_BGR2GRAY)
old_gray = cv2.equalizeHist(old_gray)

p0=getUniformPoints(old_gray,(303,203),(449,363),500)

#p0 = cv2.goodFeaturesToTrack(old_gray, mask = None, **feature_params)
#p0 = old_gray()

# Create a mask image for drawing purposes
mask = np.zeros_like(old_frame)
frame_idx = 0
detect_interval = 2

while(1):
    ret,frame = cap.read()
    frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    frame_gray = cv2.equalizeHist(frame_gray)
    #print "len p0:",len(p0)
    if p0 is None: