Я действительно не знаю, правильное ли слово "UV's", так как я из мира Unity и пытаюсь написать кое-что на python. То, что я пытаюсь сделать, - это сфотографировать человека (с веб-камеры), разместить его ориентиры / ключевые особенности и изменить второе изображение (другого человека), чтобы их ключевые черты находились в одном месте при морфинге. / деформируют части кожи, которые находятся внутри лица, в соответствии с положением ориентиров первого входного изображения (веб-камеры). После этого мне нужно вернуть лицо на вход без веб-камеры. (прошу прощения за то, насколько это заставило меня походить на серийного убийцу, растягивающего и режущего лица) Я знаю, что это, вероятно, не имело никакого смысла, но я хочу, чтобы это выглядело как это .
У меня есть ориентир лица и вырезание сделано с помощью DLIB
и OpenCV
, но мне нужен способ найти способ взять эти «вырезанные» части лица и растянуть их «динамически». Под динамическим я подразумеваю то, что вы не просто накладываете маску, линейно изменяя ее размер на 1 или 2 оси. Вы можете выбрать точку маски и изменить ее, я хочу это сделать, но моя маска - это мой вырезанный кусок, а точка - это часть этого фрагмента, который необходимо изменить, чтобы фрагмент соответствовал положению сгенерированных ориентиров. Я знаю, что об этом топи c очень сложно думать, и если вам нужны какие-либо разъяснения, просто спросите. Мой код:
import cv2
import numpy as np
import dlib
cap = cv2.VideoCapture(0)
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
while True:
_, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = detector(gray)
for face in faces:
x1 = face.left()
y1 = face.top()
x2 = face.right()
y2 = face.bottom()
cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 3)
landmarks = predictor(gray, face)
for n in range(0, 68):
x = landmarks.part(n).x
y = landmarks.part(n).y
cv2.circle(frame, (x, y), 4, (255, 0, 0), -1)
cv2.imshow("Frame", frame)
key = cv2.waitKey(1)
if key == 27:
break
EDIT: Нет, я не серийный убийца