mirror of
https://github.com/iperov/DeepFaceLab.git
synced 2025-08-22 14:24:40 -07:00
extend mask to forehead
This commit is contained in:
parent
93ee889597
commit
dbf11f57a7
1 changed files with 62 additions and 30 deletions
|
@ -161,43 +161,75 @@ def get_image_hull_mask (image_shape, image_landmarks, ie_polys=None):
|
||||||
|
|
||||||
hull_mask = np.zeros(image_shape[0:2]+(1,),dtype=np.float32)
|
hull_mask = np.zeros(image_shape[0:2]+(1,),dtype=np.float32)
|
||||||
|
|
||||||
cv2.fillConvexPoly( hull_mask, cv2.convexHull(
|
# cv2.fillConvexPoly( hull_mask, cv2.convexHull(
|
||||||
np.concatenate ( (int_lmrks[0:9],
|
# np.concatenate ( (int_lmrks[0:9],
|
||||||
int_lmrks[17:18]))) , (1,) )
|
# int_lmrks[17:18]))) , (1,) )
|
||||||
|
|
||||||
cv2.fillConvexPoly( hull_mask, cv2.convexHull(
|
# cv2.fillConvexPoly( hull_mask, cv2.convexHull(
|
||||||
np.concatenate ( (int_lmrks[8:17],
|
# np.concatenate ( (int_lmrks[8:17],
|
||||||
int_lmrks[26:27]))) , (1,) )
|
# int_lmrks[26:27]))) , (1,) )
|
||||||
|
|
||||||
cv2.fillConvexPoly( hull_mask, cv2.convexHull(
|
# cv2.fillConvexPoly( hull_mask, cv2.convexHull(
|
||||||
np.concatenate ( (int_lmrks[17:20],
|
# np.concatenate ( (int_lmrks[17:20],
|
||||||
int_lmrks[8:9]))) , (1,) )
|
# int_lmrks[8:9]))) , (1,) )
|
||||||
|
|
||||||
cv2.fillConvexPoly( hull_mask, cv2.convexHull(
|
# cv2.fillConvexPoly( hull_mask, cv2.convexHull(
|
||||||
np.concatenate ( (int_lmrks[24:27],
|
# np.concatenate ( (int_lmrks[24:27],
|
||||||
int_lmrks[8:9]))) , (1,) )
|
# int_lmrks[8:9]))) , (1,) )
|
||||||
|
|
||||||
cv2.fillConvexPoly( hull_mask, cv2.convexHull(
|
# cv2.fillConvexPoly( hull_mask, cv2.convexHull(
|
||||||
np.concatenate ( (int_lmrks[19:25],
|
# np.concatenate ( (int_lmrks[19:25],
|
||||||
int_lmrks[8:9],
|
# int_lmrks[8:9],
|
||||||
))) , (1,) )
|
# ))) , (1,) )
|
||||||
|
|
||||||
cv2.fillConvexPoly( hull_mask, cv2.convexHull(
|
# cv2.fillConvexPoly( hull_mask, cv2.convexHull(
|
||||||
np.concatenate ( (int_lmrks[17:22],
|
# np.concatenate ( (int_lmrks[17:22],
|
||||||
int_lmrks[27:28],
|
# int_lmrks[27:28],
|
||||||
int_lmrks[31:36],
|
# int_lmrks[31:36],
|
||||||
int_lmrks[8:9]
|
# int_lmrks[8:9]
|
||||||
))) , (1,) )
|
# ))) , (1,) )
|
||||||
|
|
||||||
cv2.fillConvexPoly( hull_mask, cv2.convexHull(
|
# cv2.fillConvexPoly( hull_mask, cv2.convexHull(
|
||||||
np.concatenate ( (int_lmrks[22:27],
|
# np.concatenate ( (int_lmrks[22:27],
|
||||||
int_lmrks[27:28],
|
# int_lmrks[27:28],
|
||||||
int_lmrks[31:36],
|
# int_lmrks[31:36],
|
||||||
int_lmrks[8:9]
|
# int_lmrks[8:9]
|
||||||
))) , (1,) )
|
# ))) , (1,) )
|
||||||
|
|
||||||
#nose
|
# #nose
|
||||||
cv2.fillConvexPoly( hull_mask, cv2.convexHull(int_lmrks[27:36]), (1,) )
|
# cv2.fillConvexPoly( hull_mask, cv2.convexHull(int_lmrks[27:36]), (1,) )
|
||||||
|
ml_pnt = (landmarks[36] + landmarks[0]) // 2
|
||||||
|
mr_pnt = (landmarks[16] + landmarks[45]) // 2
|
||||||
|
|
||||||
|
# mid points between the mid points and eye
|
||||||
|
ql_pnt = (landmarks[36] + ml_pnt) // 2
|
||||||
|
qr_pnt = (landmarks[45] + mr_pnt) // 2
|
||||||
|
|
||||||
|
# Top of the eye arrays
|
||||||
|
bot_l = np.array((ql_pnt, landmarks[36], landmarks[37], landmarks[38], landmarks[39]))
|
||||||
|
bot_r = np.array((landmarks[42], landmarks[43], landmarks[44], landmarks[45], qr_pnt))
|
||||||
|
|
||||||
|
# Eyebrow arrays
|
||||||
|
top_l = landmarks[17:22]
|
||||||
|
top_r = landmarks[22:27]
|
||||||
|
|
||||||
|
# Adjust eyebrow arrays
|
||||||
|
landmarks[17:22] = top_l + ((top_l - bot_l) // 2)
|
||||||
|
landmarks[22:27] = top_r + ((top_r - bot_r) // 2)
|
||||||
|
|
||||||
|
r_jaw = (landmarks[0:9], landmarks[17:18])
|
||||||
|
l_jaw = (landmarks[8:17], landmarks[26:27])
|
||||||
|
r_cheek = (landmarks[17:20], landmarks[8:9])
|
||||||
|
l_cheek = (landmarks[24:27], landmarks[8:9])
|
||||||
|
nose_ridge = (landmarks[19:25], landmarks[8:9],)
|
||||||
|
r_eye = (landmarks[17:22], landmarks[27:28], landmarks[31:36], landmarks[8:9])
|
||||||
|
l_eye = (landmarks[22:27], landmarks[27:28], landmarks[31:36], landmarks[8:9])
|
||||||
|
nose = (landmarks[27:31], landmarks[31:36])
|
||||||
|
parts = [r_jaw, l_jaw, r_cheek, l_cheek, nose_ridge, r_eye, l_eye, nose]
|
||||||
|
|
||||||
|
for item in parts:
|
||||||
|
merged = np.concatenate(item)
|
||||||
|
cv2.fillConvexPoly(hull_mask, cv2.convexHull(merged), 255.) # pylint: disable=no-member
|
||||||
|
|
||||||
if ie_polys is not None:
|
if ie_polys is not None:
|
||||||
ie_polys.overlay_mask(hull_mask)
|
ie_polys.overlay_mask(hull_mask)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue