خرید بک لینک

Vote count: 0

I'm working on a facial recognition project with DLib, and recently managed to retu to me the list of facial keypoints in addition to the formed image:

Relevant Code:

def get_landmarks(im):
    rects = detector(im, 1)

    if len(rects) > 1:
        raise TooManyFaces
    if len(rects) == 0:
        raise NoFaces

    retu numpy.matrix([[p.x, p.y] for p in predictor(im, rects[0]).parts()])


for f in glob.glob(os.path.join(faces_folder_path, "*")):
    print("Processing file: {}".format(f))
    img = io.imread(f)

    win.clear_overlay()
    win.set_image(img)

    dets = detector(img, 1)
    print("Number of faces detected: {}".format(len(dets)))
    for k, d in enumerate(dets):
        # Get the landmarks/parts for the face in box d.
        shape = predictor(img, d)
        lms = get_landmarks(img)
        print ("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format(k, d.left(), d.top(), d.right(), d.bottom()))
        print ("Part 0: {}, Part 1: {} ...".format(shape.part(0), shape.part(1)))
        newSection()
        print ("Keypoints:" + (str(lms)))
        # Draw the face landmarks on the screen.
        win.add_overlay(shape)

Result:

enter image description here Now, I need to overlay them into the image, and that's where I ran into a problem. The overlay code I got from a Matthew Earl on github:

def aotate_landmarks(im, landmarks):
    im = im.copy()
    for idx, point in enumerate(landmarks):
        pos = (point[0, 0], point[0, 1])
        cv2.putText(im, str(idx), pos,
                    fontFace=cv2.FONT_HERSHEY_SCRIPT_SIMPLEX,
                    fontScale=0.4,
                    color=(0, 0, 255))
        cv2.circle(im, pos, 3, color=(0, 255, 255))
    retu im

Isn't integrating right with the rest of my code:

win.add_overlay(dets)
iwl = aotate_landmarks(img, lms)
cv2.imshow("Landmarks", iwl)
dlib.hit_enter_to_continue()

And when I try to display it, it just gives me a tiny gray window with nothing in it:

imB = im.copy()
for idx, point in enumerate(lms):
    pos = (point[0, 0], point[0, 1])
    cv2.putText(imB, str(idx), pos,
                fontFace=cv2.FONT_HERSHEY_SCRIPT_SIMPLEX,
                fontScale=0.4,
                color=(0, 0, 255))
    cv2.circle(im, pos, 3, color=(0, 255, 255))

    WIDTH = 1000
    HEIGHT = 1000

    cv2.namedWindow('image', cv2.WINDOW_NORMAL)
    cv2.imshow('image', img)
    cv2.resizeWindow('image', WIDTH, HEIGHT)  

Can someone show me what I'm doing wrong here? I need to display the points over the image, like this

asked 1 min ago

برچسب: نویسنده: استخدام کار تاريخ: سه شنبه 18 خرداد 1395 ساعت: 3:05

صفحه بندی