У меня есть изображение фронтального человека, на котором:
1) Я использовал обнаружение лицевого ориентира, чтобы определить точку подбородка.
2) Добавьте определенное значение, чтобы понизить его у-значение координаты.
3) Узнать ширину изображения.
4) Провести линию через точку.
Теперь я хочу изменить цветчасть изображения под желтой линией до белого цвета, чтобы у меня была только целая отделенная голова.Как это сделать?
Код, который я сделал до сих пор:
import cv2
import numpy as np
import dlib
img1 = cv2.imread('Test.jpg')
#Facial Landmark Detection
predictor_path = "C:\\Users\\G7K4\\Desktop\\BackEnd_New\\01 HeadSwap\\shape_predictor_68_face_landmarks.dat"
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor(predictor_path)
img2 = detector(img1)
for k, d in enumerate(img2):
shape = predictor(img1, d)
vec = np.empty([68, 2], dtype = int)
for b in range(68):
vec[b][0] = shape.part(b).x
vec[b][1] = shape.part(b).y
SampleHead_chinPoint = (vec[8,0], vec[8,1])
print(SampleHead_chinPoint )
a = SampleHead_chinPoint[0]
b = SampleHead_chinPoint[1]
c = b + 25
cv2.circle(img1, (a, c), 5, (0,0,255), -1)
cv2.imshow("Pointed", img1)
cv2.waitKey(0)
width = img1.shape[1]
cv2.line(img1, (0,c), (width, c), (0, 255, 255), 2)
cv2.imshow("Lined", img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
Изображения:
Исходное изображение:
Выход 1:
Выход 2: