Skip to content

Instantly share code, notes, and snippets.

@LongClipeus
Created April 28, 2023 03:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save LongClipeus/e02cdc384b7d1c53eee9883e1bbaf6ee to your computer and use it in GitHub Desktop.
Save LongClipeus/e02cdc384b7d1c53eee9883e1bbaf6ee to your computer and use it in GitHub Desktop.
The face mesh points to the lips in Mediapipe
object FaceMeshConst {
val FACEMESH_UPPER_RIGHT_LIPSS = listOf(
StraightLineFaceMesh(0, 267),
StraightLineFaceMesh(267, 11),
StraightLineFaceMesh(11, 0),
StraightLineFaceMesh(11, 302),
StraightLineFaceMesh(302, 267),
StraightLineFaceMesh(267, 11),
StraightLineFaceMesh(267, 269),
StraightLineFaceMesh(269, 302),
StraightLineFaceMesh(302, 267),
StraightLineFaceMesh(269, 303),
StraightLineFaceMesh(303, 302),
StraightLineFaceMesh(302, 269),
StraightLineFaceMesh(269, 270),
StraightLineFaceMesh(270, 303),
StraightLineFaceMesh(303, 269),
StraightLineFaceMesh(270, 304),
StraightLineFaceMesh(304, 303),
StraightLineFaceMesh(303, 270),
StraightLineFaceMesh(270, 408),
StraightLineFaceMesh(408, 304),
StraightLineFaceMesh(304, 270),
StraightLineFaceMesh(270, 409),
StraightLineFaceMesh(409, 408),
StraightLineFaceMesh(408, 270),
StraightLineFaceMesh(408, 409),
StraightLineFaceMesh(409, 306),
StraightLineFaceMesh(306, 408),
StraightLineFaceMesh(409, 291),
StraightLineFaceMesh(291, 306),
StraightLineFaceMesh(306, 409),
StraightLineFaceMesh(11, 302),
StraightLineFaceMesh(302, 12),
StraightLineFaceMesh(12, 11),
StraightLineFaceMesh(302, 268),
StraightLineFaceMesh(268, 12),
StraightLineFaceMesh(12, 302),
StraightLineFaceMesh(302, 303),
StraightLineFaceMesh(303, 268),
StraightLineFaceMesh(268, 302),
StraightLineFaceMesh(303, 271),
StraightLineFaceMesh(271, 268),
StraightLineFaceMesh(268, 303),
StraightLineFaceMesh(303, 304),
StraightLineFaceMesh(304, 271),
StraightLineFaceMesh(271, 303),
StraightLineFaceMesh(304, 272),
StraightLineFaceMesh(272, 271),
StraightLineFaceMesh(271, 304),
StraightLineFaceMesh(304, 408),
StraightLineFaceMesh(408, 272),
StraightLineFaceMesh(272, 304),
StraightLineFaceMesh(408, 407),
StraightLineFaceMesh(407, 272),
StraightLineFaceMesh(272, 408),
StraightLineFaceMesh(408, 306),
StraightLineFaceMesh(306, 407),
StraightLineFaceMesh(407, 408),
StraightLineFaceMesh(12, 268),
StraightLineFaceMesh(268, 13),
StraightLineFaceMesh(13, 12),
StraightLineFaceMesh(268, 312),
StraightLineFaceMesh(312, 13),
StraightLineFaceMesh(13, 268),
StraightLineFaceMesh(268, 271),
StraightLineFaceMesh(271, 312),
StraightLineFaceMesh(312, 268),
StraightLineFaceMesh(271, 311),
StraightLineFaceMesh(311, 312),
StraightLineFaceMesh(312, 271),
StraightLineFaceMesh(271, 272),
StraightLineFaceMesh(272, 311),
StraightLineFaceMesh(311, 271),
StraightLineFaceMesh(272, 310),
StraightLineFaceMesh(310, 311),
StraightLineFaceMesh(311, 272),
StraightLineFaceMesh(272, 407),
StraightLineFaceMesh(407, 310),
StraightLineFaceMesh(310, 272),
StraightLineFaceMesh(407, 415),
StraightLineFaceMesh(415, 310),
StraightLineFaceMesh(310, 407),
StraightLineFaceMesh(407, 308),
StraightLineFaceMesh(308, 415),
StraightLineFaceMesh(415, 407),
StraightLineFaceMesh(407, 308),
StraightLineFaceMesh(308, 292),
StraightLineFaceMesh(292, 407),
StraightLineFaceMesh(407, 306),
StraightLineFaceMesh(306, 292),
StraightLineFaceMesh(292, 407),
)
val FACEMESH_UPPER_LEFT_LIPSS = listOf(
StraightLineFaceMesh(0, 37),
StraightLineFaceMesh(37, 11),
StraightLineFaceMesh(11, 0),
StraightLineFaceMesh(37, 11),
StraightLineFaceMesh(11, 72),
StraightLineFaceMesh(72, 37),
StraightLineFaceMesh(37, 72),
StraightLineFaceMesh(72, 39),
StraightLineFaceMesh(39, 37),
StraightLineFaceMesh(39, 72),
StraightLineFaceMesh(72, 73),
StraightLineFaceMesh(73, 39),
StraightLineFaceMesh(39, 73),
StraightLineFaceMesh(73, 40),
StraightLineFaceMesh(40, 39),
StraightLineFaceMesh(40, 73),
StraightLineFaceMesh(73, 74),
StraightLineFaceMesh(74, 40),
StraightLineFaceMesh(40, 74),
StraightLineFaceMesh(74, 184),
StraightLineFaceMesh(184, 40),
StraightLineFaceMesh(40, 184),
StraightLineFaceMesh(184, 185),
StraightLineFaceMesh(185, 40),
StraightLineFaceMesh(185, 184),
StraightLineFaceMesh(184, 76),
StraightLineFaceMesh(76, 185),
StraightLineFaceMesh(185, 76),
StraightLineFaceMesh(76, 61),
StraightLineFaceMesh(61, 185),
StraightLineFaceMesh(11, 12),
StraightLineFaceMesh(12, 72),
StraightLineFaceMesh(72, 11),
StraightLineFaceMesh(72, 12),
StraightLineFaceMesh(12, 38),
StraightLineFaceMesh(38, 72),
StraightLineFaceMesh(72, 38),
StraightLineFaceMesh(38, 73),
StraightLineFaceMesh(73, 72),
StraightLineFaceMesh(73, 38),
StraightLineFaceMesh(38, 41),
StraightLineFaceMesh(41, 73),
StraightLineFaceMesh(73, 41),
StraightLineFaceMesh(41, 74),
StraightLineFaceMesh(74, 73),
StraightLineFaceMesh(74, 41),
StraightLineFaceMesh(41, 42),
StraightLineFaceMesh(42, 74),
StraightLineFaceMesh(74, 42),
StraightLineFaceMesh(42, 184),
StraightLineFaceMesh(184, 74),
StraightLineFaceMesh(184, 42),
StraightLineFaceMesh(42, 183),
StraightLineFaceMesh(183, 184),
StraightLineFaceMesh(184, 183),
StraightLineFaceMesh(183, 76),
StraightLineFaceMesh(76, 184),
StraightLineFaceMesh(183, 62),
StraightLineFaceMesh(62, 76),
StraightLineFaceMesh(76, 183),
StraightLineFaceMesh(12, 13),
StraightLineFaceMesh(13, 38),
StraightLineFaceMesh(38, 12),
StraightLineFaceMesh(38, 13),
StraightLineFaceMesh(13, 82),
StraightLineFaceMesh(82, 38),
StraightLineFaceMesh(38, 82),
StraightLineFaceMesh(82, 41),
StraightLineFaceMesh(41, 38),
StraightLineFaceMesh(41, 82),
StraightLineFaceMesh(82, 81),
StraightLineFaceMesh(81, 41),
StraightLineFaceMesh(41, 81),
StraightLineFaceMesh(81, 42),
StraightLineFaceMesh(42, 41),
StraightLineFaceMesh(42, 81),
StraightLineFaceMesh(81, 80),
StraightLineFaceMesh(80, 42),
StraightLineFaceMesh(42, 80),
StraightLineFaceMesh(80, 183),
StraightLineFaceMesh(183, 42),
StraightLineFaceMesh(183, 80),
StraightLineFaceMesh(80, 191),
StraightLineFaceMesh(191, 183),
StraightLineFaceMesh(183, 191),
StraightLineFaceMesh(191, 78),
StraightLineFaceMesh(78, 183),
StraightLineFaceMesh(183, 78),
StraightLineFaceMesh(78, 62),
StraightLineFaceMesh(62, 183),
)
val FACEMESH_LOWER_RIGHT_LIPS = listOf(
StraightLineFaceMesh(14, 317),
StraightLineFaceMesh(317, 316),
StraightLineFaceMesh(316, 14),
StraightLineFaceMesh(14, 316),
StraightLineFaceMesh(316, 15),
StraightLineFaceMesh(15, 14),
StraightLineFaceMesh(317, 403),
StraightLineFaceMesh(403, 316),
StraightLineFaceMesh(316, 317),
StraightLineFaceMesh(317, 402),
StraightLineFaceMesh(402, 403),
StraightLineFaceMesh(403, 317),
StraightLineFaceMesh(402, 318),
StraightLineFaceMesh(318, 403),
StraightLineFaceMesh(403, 402),
StraightLineFaceMesh(318, 319),
StraightLineFaceMesh(319, 403),
StraightLineFaceMesh(403, 318),
StraightLineFaceMesh(318, 325),
StraightLineFaceMesh(325, 319),
StraightLineFaceMesh(319, 318),
StraightLineFaceMesh(318, 324),
StraightLineFaceMesh(324, 325),
StraightLineFaceMesh(325, 318),
StraightLineFaceMesh(324, 308),
StraightLineFaceMesh(308, 325),
StraightLineFaceMesh(325, 324),
StraightLineFaceMesh(308, 292),
StraightLineFaceMesh(292, 325),
StraightLineFaceMesh(325, 308),
StraightLineFaceMesh(15, 316),
StraightLineFaceMesh(316, 315),
StraightLineFaceMesh(315, 15),
StraightLineFaceMesh(15, 315),
StraightLineFaceMesh(315, 16),
StraightLineFaceMesh(16, 15),
StraightLineFaceMesh(316, 404),
StraightLineFaceMesh(404, 315),
StraightLineFaceMesh(315, 316),
StraightLineFaceMesh(316, 403),
StraightLineFaceMesh(403, 404),
StraightLineFaceMesh(404, 316),
StraightLineFaceMesh(403, 320),
StraightLineFaceMesh(320, 404),
StraightLineFaceMesh(404, 403),
StraightLineFaceMesh(403, 319),
StraightLineFaceMesh(319, 320),
StraightLineFaceMesh(320, 403),
StraightLineFaceMesh(319, 325),
StraightLineFaceMesh(325, 320),
StraightLineFaceMesh(320, 319),
StraightLineFaceMesh(325, 307),
StraightLineFaceMesh(307, 320),
StraightLineFaceMesh(320, 325),
StraightLineFaceMesh(325, 292),
StraightLineFaceMesh(292, 307),
StraightLineFaceMesh(307, 325),
StraightLineFaceMesh(292, 306),
StraightLineFaceMesh(306, 307),
StraightLineFaceMesh(307, 292),
StraightLineFaceMesh(16, 315),
StraightLineFaceMesh(315, 314),
StraightLineFaceMesh(314, 16),
StraightLineFaceMesh(16, 314),
StraightLineFaceMesh(314, 17),
StraightLineFaceMesh(17, 16),
StraightLineFaceMesh(315, 405),
StraightLineFaceMesh(405, 314),
StraightLineFaceMesh(314, 315),
StraightLineFaceMesh(315, 404),
StraightLineFaceMesh(404, 405),
StraightLineFaceMesh(405, 315),
StraightLineFaceMesh(404, 321),
StraightLineFaceMesh(321, 405),
StraightLineFaceMesh(405, 404),
StraightLineFaceMesh(404, 320),
StraightLineFaceMesh(320, 321),
StraightLineFaceMesh(321, 404),
StraightLineFaceMesh(320, 307),
StraightLineFaceMesh(307, 321),
StraightLineFaceMesh(321, 320),
StraightLineFaceMesh(307, 375),
StraightLineFaceMesh(375, 321),
StraightLineFaceMesh(321, 307),
StraightLineFaceMesh(307, 306),
StraightLineFaceMesh(306, 375),
StraightLineFaceMesh(375, 307),
StraightLineFaceMesh(306, 291),
StraightLineFaceMesh(291, 375),
StraightLineFaceMesh(375, 306),
)
val FACEMESH_LOWER_LEFT_LIPS = listOf(
StraightLineFaceMesh(14, 15),
StraightLineFaceMesh(15, 86),
StraightLineFaceMesh(86, 14),
StraightLineFaceMesh(14, 86),
StraightLineFaceMesh(86, 87),
StraightLineFaceMesh(87, 14),
StraightLineFaceMesh(87, 86),
StraightLineFaceMesh(86, 179),
StraightLineFaceMesh(179, 87),
StraightLineFaceMesh(87, 179),
StraightLineFaceMesh(179, 178),
StraightLineFaceMesh(178, 87),
StraightLineFaceMesh(178, 179),
StraightLineFaceMesh(179, 88),
StraightLineFaceMesh(88, 178),
StraightLineFaceMesh(88, 179),
StraightLineFaceMesh(179, 89),
StraightLineFaceMesh(89, 88),
StraightLineFaceMesh(88, 89),
StraightLineFaceMesh(89, 96),
StraightLineFaceMesh(96, 88),
StraightLineFaceMesh(88, 96),
StraightLineFaceMesh(96, 95),
StraightLineFaceMesh(95, 88),
StraightLineFaceMesh(95, 96),
StraightLineFaceMesh(96, 78),
StraightLineFaceMesh(78, 95),
StraightLineFaceMesh(78, 96),
StraightLineFaceMesh(96, 62),
StraightLineFaceMesh(62, 78),
StraightLineFaceMesh(15, 16),
StraightLineFaceMesh(16, 85),
StraightLineFaceMesh(85, 15),
StraightLineFaceMesh(15, 85),
StraightLineFaceMesh(85, 86),
StraightLineFaceMesh(86, 15),
StraightLineFaceMesh(86, 85),
StraightLineFaceMesh(85, 180),
StraightLineFaceMesh(180, 86),
StraightLineFaceMesh(86, 180),
StraightLineFaceMesh(180, 179),
StraightLineFaceMesh(179, 86),
StraightLineFaceMesh(179, 180),
StraightLineFaceMesh(180, 90),
StraightLineFaceMesh(90, 179),
StraightLineFaceMesh(179, 90),
StraightLineFaceMesh(90, 89),
StraightLineFaceMesh(89, 179),
StraightLineFaceMesh(89, 90),
StraightLineFaceMesh(90, 96),
StraightLineFaceMesh(96, 89),
StraightLineFaceMesh(96, 90),
StraightLineFaceMesh(90, 77),
StraightLineFaceMesh(77, 96),
StraightLineFaceMesh(96, 77),
StraightLineFaceMesh(77, 62),
StraightLineFaceMesh(62, 96),
StraightLineFaceMesh(62, 77),
StraightLineFaceMesh(77, 76),
StraightLineFaceMesh(76, 62),
StraightLineFaceMesh(16, 17),
StraightLineFaceMesh(17, 84),
StraightLineFaceMesh(84, 16),
StraightLineFaceMesh(16, 84),
StraightLineFaceMesh(84, 85),
StraightLineFaceMesh(85, 16),
StraightLineFaceMesh(85, 84),
StraightLineFaceMesh(84, 181),
StraightLineFaceMesh(181, 85),
StraightLineFaceMesh(85, 181),
StraightLineFaceMesh(181, 180),
StraightLineFaceMesh(180, 85),
StraightLineFaceMesh(180, 181),
StraightLineFaceMesh(181, 91),
StraightLineFaceMesh(91, 180),
StraightLineFaceMesh(180, 91),
StraightLineFaceMesh(91, 90),
StraightLineFaceMesh(90, 180),
StraightLineFaceMesh(90, 91),
StraightLineFaceMesh(91, 77),
StraightLineFaceMesh(77, 90),
StraightLineFaceMesh(77, 91),
StraightLineFaceMesh(91, 146),
StraightLineFaceMesh(146, 77),
StraightLineFaceMesh(77, 146),
StraightLineFaceMesh(146, 76),
StraightLineFaceMesh(76, 77),
StraightLineFaceMesh(76, 146),
StraightLineFaceMesh(146, 61),
StraightLineFaceMesh(61, 76),
)
}
data class StraightLineFaceMesh(
val indexStart: Int,
val indexEnd: Int
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment