def mfTracker(img, bb, ts, oldimg, **kwargs):
    """
    **DESCRIPTION**
    
    (Dev Zone)

    Tracking the object surrounded by the bounding box in the given
    image using SURF keypoints.

    Warning: Use this if you know what you are doing. Better have a 
    look at Image.track()

    **PARAMETERS**

    * *img* - Image - Image to be tracked.
    * *bb*  - tuple - Bounding Box tuple (x, y, w, h)
    * *oldimg* - Image - Previous Image
    * *ts*  - TrackSet - SimpleCV.Features.TrackSet.

    Optional PARAMETERS:

    numM     - Number of points to be tracked in the bounding box
               in height direction. 
                
    numN     - Number of points to be tracked in the bounding box
               in width direction. 
                  
    margin   - Margin around the bounding box.

    winsize_lk  - Optical Flow search window size.

    winsize - Size of quadratic area around the point which is compared.

    **RETURNS**

    SimpleCV.Features.Tracking.MFTracker

    **HOW TO USE**

    >>> cam = Camera()
    >>> ts = []
    >>> img = cam.getImage()
    >>> bb = (100, 100, 300, 300) # get BB from somewhere
    >>> ts = MFTracker(img, bb, ts, img, numM=15, numN=15, winsize=12)
    >>> while (some_condition_here):
        ... img = cam.getImage()
        ... bb = ts[-1].bb
        ... prevImg = img
        ... ts = MFTracker(img, bb, ts, img, numM=15, numN=15, winsize=12)
        ... ts[-1].drawBB()
        ... img.show()

    This is too much confusing. Better use
    Image.track() method.

    READ MORE:

    Median Flow Tracker:
    
    Media Flow Tracker is the base tracker that is used in OpenTLD. It is based on
    Optical Flow. It calculates optical flow of the points in the bounding box from
    frame 1 to frame 2 and from frame 2 to frame 1 and using back track error, removes
    false positives. As the name suggests, it takes the median of the flow, and eliminates
    points.
    """
    numM = 10
    numN = 10
    margin = 5
    winsize_ncc = 10
    winsize_lk = 4

    for key in kwargs:
        if key == 'numM':
            numM = kwargs[key]
        elif key == 'numN':
            numN = kwargs[key]
        elif key == 'margin':
            margin = kwargs[key]
        elif key == 'winsize':
            winsize_ncc = kwargs[key]
        elif key == 'winsize_lk':
            winsize_lk = kwargs[key]

    oldg = oldimg.getGrayNumpyCv2()
    newg = img.getGrayNumpyCv2()
    bb = [bb[0], bb[1], bb[0]+bb[2], bb[1]+bb[3]]
    bb, shift = fbtrack(oldg, newg, bb, numM, numN, margin, winsize_ncc, winsize_lk)
    bb = [bb[0], bb[1], bb[2]-bb[0], bb[1]-bb[3]]
    track = MFTrack(img, bb, shift)
    return track
dataset/ETHPy150Open sightmachine/SimpleCV/SimpleCV/Tracking/MFTracker.py/mfTracker/swapped operands of `-`