Как увеличить определенную часть изображения с помощью PIL? - PullRequest
0 голосов
/ 15 января 2019

Я использовал модуль, называемый распознаванием лиц, чтобы создать контур губ на любой фотографии, и хотел изменить изображение так, чтобы оно отображало только губы, а не лицо. Однако я не знаю, как это сделать.

Я пытался преобразовать face_landmarks в массив numpy, а затем показать его, но понял, что он просто показывает координаты губ.

from PIL import Image, ImageDraw
import face_recognition
import numpy as np

# Load the jpg file into a numpy array
image = 

face_recognition.load_image_file ( "/ Users / 23Athreyad / Документы / trump.jpg")

# Find all facial features in all the faces in the image
face_landmarks_list = face_recognition.face_landmarks(image)


for face_landmarks in face_landmarks_list:
    pil_image = Image.fromarray(image)
    d = ImageDraw.Draw(pil_image, 'RGBA')

    # Gloss the lips
    d.polygon(face_landmarks['top_lip'], fill=(150, 0, 0, 128))
    d.polygon(face_landmarks['bottom_lip'], fill=(150, 0, 0, 128))


   print(face_landmarks['top_lip'])
   pil_image.show()

Ожидаемый результат - увеличенное изображение губ, но я не уверен, как к этому добраться.

1 Ответ

0 голосов
/ 15 января 2019

Если вы хотите извлечь прямоугольник, ограничивающий губу, вы можете просто получить координату верхнего левого угла прямоугольника (наименьшие координаты «x» и «y») и нижнюю правую координату (наибольшая «x») и 'y' координата) и используйте:

lip = image.crop((min_x, min_y, max_x, max_y))

Обратите внимание, что image является PIL Image объектом.

...