コード例 #1
0
def score(testfile, correctfile):
    test_pts = Annotating.read_anno(testfile)
    correct_pts = Annotating.read_anno(correctfile)
    net_error = 0.0
    max_error = 0.0
    rel_pts = []
    if IGNORE_COLLAR:
        if MODE == SWEATER or MODE == TEE:
            check_points = (0, 1, 2, 3, 4, 8, 9, 10, 11, 12)
        else:
            check_points = range(len(test_pts))
    else:
        check_points = range(len(test_pts))
    errors = []
    (x_axis, y_axis) = get_axes(correct_pts)
    for i in check_points:  #(1,4,8,11):#range(len(test_pts)):
        test_pt = test_pts[i]
        correct_pt = correct_pts[i]
        rel_pt = Vector2D.pt_diff(test_pt, correct_pt)
        rel_pts.append(
            (Vector2D.dot_prod(rel_pt,
                               x_axis), Vector2D.dot_prod(rel_pt, y_axis)))
        error = Vector2D.pt_distance(test_pt, correct_pt)
        errors.append(error)
    return (lst_avg(errors), rel_pts)
コード例 #2
0
def visualize_errors(rel_pts):
    model_file = MODELS[MODE]
    model = pickle.load(open(model_file))
    white_image = cv.CreateImage((750, 500), 8, 3)
    cv.Set(white_image, cv.CV_RGB(255, 255, 255))
    model.translate((50, 0))
    model.draw_to_image(white_image, cv.CV_RGB(0, 0, 255))
    """
    for i,pt in enumerate(model.vertices_full()):
        ctr = (pt[0] + mean_x[i],pt[1] + mean_y[i])
        y_axis = std_y[i]
        x_axis = std_x[i]
        cv.Ellipse(white_image,ctr,(x_axis,y_axis),0,0,360,cv.CV_RGB(255,0,0))
    """

    for i, pt in enumerate(model.vertices_full()):
        print "Drawing model"
        absolute_pts = [Vector2D.pt_sum(pt, rel_pt) for rel_pt in rel_pts[i]]
        #for abs_pt in absolute_pts:
        #    cv.Circle(white_image,abs_pt,2,cv.CV_RGB(0,255,0),-1)
        angle = get_angle(rel_pts[i])

        x_axis = (cos(angle), -1 * sin(angle))
        y_axis = (sin(angle), cos(angle))
        mean_x = lst_avg([x for (x, y) in rel_pts[i]]) + pt[0]
        mean_y = lst_avg([y for (x, y) in rel_pts[i]]) + pt[1]
        std_dev_x = lst_std(
            [Vector2D.dot_prod(rel_pt, x_axis) for rel_pt in rel_pts[i]])
        std_dev_y = lst_std(
            [Vector2D.dot_prod(rel_pt, y_axis) for rel_pt in rel_pts[i]])
        cv.Ellipse(white_image, (mean_x, mean_y), (std_dev_x, std_dev_y),
                   angle * 360 / (2 * pi), 0, 360, cv.CV_RGB(255, 0, 0), 2)
        """
        newmat = cv.CreateMat(1,len(absolute_pts),cv.CV_32SC2)
        for i in range(len(absolute_pts)):
            newmat[0,i] = absolute_pts[i]
        fit_ellipse = cv.FitEllipse2(newmat)
        cv.EllipseBox(white_image,fit_ellipse,cv.CV_RGB(255,0,0))
        """

    cv.SaveImage("comparison.png", white_image)
コード例 #3
0
ファイル: comparer.py プロジェクト: CloPeMa/visual_feedback
def visualize_errors(rel_pts):
    model_file = MODELS[MODE]
    model = pickle.load(open(model_file))
    white_image = cv.CreateImage((750,500),8,3)
    cv.Set(white_image,cv.CV_RGB(255,255,255))
    model.translate((50,0))
    model.draw_to_image(white_image,cv.CV_RGB(0,0,255))
    """
    for i,pt in enumerate(model.vertices_full()):
        ctr = (pt[0] + mean_x[i],pt[1] + mean_y[i])
        y_axis = std_y[i]
        x_axis = std_x[i]
        cv.Ellipse(white_image,ctr,(x_axis,y_axis),0,0,360,cv.CV_RGB(255,0,0))
    """
    
    for i,pt in enumerate(model.vertices_full()):
        print "Drawing model"
        absolute_pts = [Vector2D.pt_sum(pt,rel_pt) for rel_pt in rel_pts[i]]
        #for abs_pt in absolute_pts:
        #    cv.Circle(white_image,abs_pt,2,cv.CV_RGB(0,255,0),-1)
        angle = get_angle(rel_pts[i])
        
        x_axis = (cos(angle),-1*sin(angle))
        y_axis = (sin(angle),cos(angle))
        mean_x = lst_avg([x for (x,y) in rel_pts[i]]) + pt[0]
        mean_y = lst_avg([y for (x,y) in rel_pts[i]]) + pt[1]
        std_dev_x = lst_std([Vector2D.dot_prod(rel_pt,x_axis) for rel_pt in rel_pts[i]])
        std_dev_y = lst_std([Vector2D.dot_prod(rel_pt,y_axis) for rel_pt in rel_pts[i]])
        cv.Ellipse(white_image,(mean_x,mean_y),(std_dev_x,std_dev_y),angle*360/(2*pi),0,360,cv.CV_RGB(255,0,0),2)
        """
        newmat = cv.CreateMat(1,len(absolute_pts),cv.CV_32SC2)
        for i in range(len(absolute_pts)):
            newmat[0,i] = absolute_pts[i]
        fit_ellipse = cv.FitEllipse2(newmat)
        cv.EllipseBox(white_image,fit_ellipse,cv.CV_RGB(255,0,0))
        """
        
    cv.SaveImage("comparison.png",white_image)
コード例 #4
0
ファイル: comparer.py プロジェクト: CloPeMa/visual_feedback
def score(testfile,correctfile):
    test_pts = Annotating.read_anno(testfile)
    correct_pts = Annotating.read_anno(correctfile)
    net_error = 0.0
    max_error = 0.0
    rel_pts = []
    if IGNORE_COLLAR:
        if MODE == SWEATER or MODE == TEE:
            check_points = (0,1,2,3,4,8,9,10,11,12)
        else:
            check_points = range(len(test_pts))
    else:
        check_points = range(len(test_pts))
    errors = []
    (x_axis,y_axis) = get_axes(correct_pts)
    for i in check_points:#(1,4,8,11):#range(len(test_pts)):
        test_pt = test_pts[i]
        correct_pt = correct_pts[i]
        rel_pt = Vector2D.pt_diff(test_pt,correct_pt)
        rel_pts.append((Vector2D.dot_prod(rel_pt,x_axis),Vector2D.dot_prod(rel_pt,y_axis)))
        error = Vector2D.pt_distance(test_pt,correct_pt)
        errors.append(error)
    return (lst_avg(errors),rel_pts)