рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рд╕рднреА рд╡рд┐рд▓рдВрдм рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЗрд╕рдХреЗ рдХрдИ рдиреБрдХрд╕рд╛рди рд╣реИрдВ, рдФрд░ рд╕рдмрд╕реЗ рднрдпрд╛рдирдХ рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рднреНрд░рд╛рдордХ рд╣реИред Clickbait, рдлреЛрдЯреЛ рдПрдбрд┐рдЯрд┐рдВрдЧ, рдЭреВрдареА рдЦрдмрд░ - рдпреЗ рд╕рднреА рдЙрдкрдХрд░рдг рд╡реИрд╢реНрд╡рд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЖрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдзреЛрдЦрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рд╛рд▓ рдХреЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдПрдХ рдирдпрд╛ рд╕рдВрднрд╛рд╡рд┐рдд рдЦрддрд░рдирд╛рдХ рдЙрдкрдХрд░рдг рдЬрд┐рд╕реЗ рдбреАрдкрдлреЗрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЧрддрд┐ рдкрдХрдбрд╝ рд░рд╣рд╛ рд╣реИред
рдореБрдЭреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЗрд╕ рддрдХрдиреАрдХ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рдереАред рдкрд╣рд▓реА рдмрд╛рд░, рдореИрдВрдиреЗ "рдПрдЖрдИ рд╕рдореНрдореЗрд▓рди 2018" рдореЗрдВ рд╡рдХреНрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрд╛ред рдПрдХ рд╡реАрдбрд┐рдпреЛ рд╡рд╣рд╛рдБ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдСрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдиреЗ рдмрд░рд╛рдХ рдУрдмрд╛рдорд╛ рдХреА рдЕрдкреАрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рд╡реАрдбрд┐рдпреЛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ред
рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдП рдЧрдП рд╡реАрдбрд┐рдпреЛ рдХреЗ рдЪрдпрди рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ ред рдкрд░рд┐рдгрд╛рдореЛрдВ рдиреЗ рдореБрдЭреЗ рдмрд╣реБрдд рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛, рдФрд░ рдореИрдВрдиреЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕рдХрд╛ рд╡рд┐рд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрдХрдиреАрдХ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ C # рдореЗрдВ рдбреАрдкрдлреЗрдХ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдирддреАрдЬрддрди, рдореБрдЭреЗ рдРрд╕рд╛ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рд╛ред

рдЕрдЪреНрдЫрд╛ рдкрдврд╝ рд▓реЛ!
рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрддрд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ
рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдереАред рдЗрд╕рд╕реЗ, рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╡реАрдбрд┐рдпреЛ рдХреЗ рдХрд╛рдо рдореЗрдВ рдЪреЗрд╣рд░рд╛ рдмрджрд▓рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдХреИрд╕рд╛ рд╣реИред
- рдПрдХ рддрд╕реНрд╡реАрд░ рд▓реЛрдб рд╣реЛ рд░рд╣реА рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдПрдХ рдЪреЗрд╣рд░рд╛ рд▓реЗрдВрдЧреЗ
- рдЪреЗрд╣рд░реЗ рдХрд╛ рдЕрд░реНрдХ
- 3 рдбреА рдореБрдЦреМрдЯрд╛ рдирд┐рд░реНрдорд╛рдг
- рд╡реАрдбрд┐рдпреЛ рдлреНрд░реЗрдо рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИ
- рдлреНрд░реЗрдо рдореЗрдВ рдЪреЗрд╣рд░реЗ рдХреЗ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ
- рдХреЛрдг рдФрд░ рдЪреЗрд╣рд░реЗ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ
- рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдФрд░ рдЪреЗрд╣рд░реЗ рдХреЗ рднрд╛рд╡реЛрдВ рдХреЛ рдПрдХ 3D рдореЙрдбрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ
- рдкреНрд░рддрд┐рдкрд╛рджрди
- рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдлреНрд░реЗрдо рдкрд░ рдмрджрд▓рдирд╛
FaceSwap рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдХрд╛рдо рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╡реАрдбрд┐рдпреЛ:
рдореИрдВрдиреЗ рдХрд╛рдо рдХреЛ 3 рднрд╛рдЧреЛрдВ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛:
1) 3 рдбреА рдорд╛рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛, рдПрдХ рдлреЛрдЯреЛ рдореЗрдВ рдПрдХ рдЪреЗрд╣рд░реЗ рдХреЛ рджреВрд╕рд░реЗ рд╕реЗ рдЪреЗрд╣рд░реЗ рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛
2) 3 рдбреА рдорд╛рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдирд╛
3) рд╡реАрдбрд┐рдпреЛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг
рдлреЛрдЯреЛ рдореЗрдВ рдЪреЗрд╣рд░рд╛ рдмрджрд▓рдиреЗ рдХреЛ рдирд┐рдореНрди рдмрд┐рдВрджреБрдУрдВ рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдПрдХ рддрд╕реНрд╡реАрд░ рд▓реЛрдб рд╣реЛ рд░рд╣реА рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдПрдХ рдЪреЗрд╣рд░рд╛ рд▓реЗрдВрдЧреЗ
- рдЙрд╕ рдЫрд╡рд┐ рдХреЛ рд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╣рдо рдЪреЗрд╣рд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд░реЗрдВрдЧреЗ
- рдЪреЗрд╣рд░реЗ рдХрд╛ рдЕрд░реНрдХ
- рдЫрд╡рд┐ 2 рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдЪреЗрд╣рд░рд╛ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдЫрд╡рд┐ 1 рдореЗрдВ рдкрд╣рд▓реВ рдЕрдиреБрдкрд╛рдд рдХреЗ рд▓рд┐рдП
- рддрд╕реНрд╡реАрд░ 2 рдореЗрдВ рдЪреЗрд╣рд░реЗ рдХреЗ рд╕рд╛рде рддрд╕реНрд╡реАрд░ 1 рдореЗрдВ рдЪреЗрд╣рд░реЗ рдХреА рдЬрдЧрд╣
рдПрдХ рдЫрд╡рд┐ рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░реЗрдВрдкрд╣рд▓реА рдЪреАрдЬрд╝ рдЬреЛ рдореИрдВрдиреЗ рд╢реБрд░реВ рдХреА рдереА рд╡рд╣ рдПрдХ рдЫрд╡рд┐ рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░ рд░рд╣реА рдереАред рдореВрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
zad1.py рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдирддреАрдЬрддрди, рдлрд╝рд╛рдЗрд▓ "eyeHandBlend.jpg" рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдВрдЦ рд╣рд╛рде рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рд╣реИред

рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ 2 рднрд╛рдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдкрд╣рд▓реЗ рдореВрд▓ рддрд╕реНрд╡реАрд░ рдореЗрдВ рдЪреЗрд╣рд░реЗ рдХреЗ рд╕рд╛рде рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдЪреЗрд╣рд░реЗ рдкрд░ рд░рдВрдЧ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рджреВрд╕рд░рд╛ рд╡рд╛рдВрдЫрд┐рдд рдЪреЗрд╣рд░реЗ рдХреЗ рд╕рд╛рде рдЫрд╡рд┐ рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдкрд╛рд░рджрд░реНрд╢реА рдмрдирд╛рддрд╛ рд╣реИ, рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЫрд╡рд┐ рдХреЗ рдХреЗрдВрджреНрд░ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдореВрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ред
рдкрд╛рдпрдерди рдХреЛрдбdef colorTransfer(src, dst, mask): transferredDst = np.copy(dst)
рдХреЛрдб # C рдкрд░ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ static public Bitmap NewColor(Bitmap src, Bitmap ins, Rectangle r) { List<Vector> srV = new List<Vector>(); List<Vector> inV = new List<Vector>(); ; for (int i = rX; i < rX + r.Width-2; i+=3) { for (int j = rY; j < rY + r.Height-3; j+=4) { Color color = src.GetPixel(i, j); Color color2 = ins.GetPixel(i, j); srV.Add(new double[] { color.R, color.G, color.B }.ToVector()); inV.Add(new double[] { color2.R, color2.G, color2.B }.ToVector()); } } Vector meanSrc = Vector.Mean(srV.ToArray()) / 255; Vector meanInk = Vector.Mean(inV.ToArray()) / 255; Tensor tensor = ImgConverter.BmpToTensor (ins.Clone(r, PixelFormat.Format32bppArgb)); tensor = tensor.DivD(meanInk); tensor = tensor.PlusD(meanSrc); tensor = tensor.TransformTensor(x => { if (x < 0) x = 0; if (x > 1) x = 1; return x; }); return ImgConverter.TensorToBitmap(tensor); }
рдЕрд▓реНрдлрд╝рд╛ рдЪреИрдирд▓ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдЫрд╡рд┐ рдХреЗ рдордзреНрдп рднрд╛рдЧ рд╕реЗ рдЕрдзрд┐рдХ рдкрд╛рд░рджрд░реНрд╢реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдлрд╝реЙрд░реНрдо рдХрд╛ рдПрдХ рд░реЗрдбрд┐рдпрд▓ рдЖрдзрд╛рд░ рдлрд╝рдВрдХреНрд╢рди рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
k рдФрд░ n рдХреЛ рдЖрдиреБрднрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред
i - OX рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдкрд┐рдХреНрд╕реЗрд▓ рдЗрдВрдбреЗрдХреНрд╕
j - рдУрдП рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдкрд┐рдХреНрд╕реЗрд▓ рдЗрдВрдбреЗрдХреНрд╕
- рдЫрд╡рд┐ рдХреЗ рдХреЗрдВрджреНрд░ рдХрд╛ рдШрдЯрдХ x
- рдЫрд╡рд┐ рдХреЗ рдХреЗрдВрджреНрд░ рдХрд╛ рдШрдЯрдХ y
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рд╛:
рдЪреЗрд╣рд░реЗ рдХреА рдЦреЛрдЬрдлреЛрдЯреЛ рдореЗрдВ рдЪреЗрд╣рд░реЗ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдИ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИрдВ:
- рд╡рд╛рдпреЛрд▓рд╛-рдЬреЛрдиреНрд╕ рдПрд▓рдЧреЛрд░рд┐рджрдо (Haar Cascades)
- рд╣реЙрдЧ + рд╕реНрд╡рдо
- рдЖрд░-рд╕реАрдПрдирдПрди
- рдлрд╛рд╕реНрдЯ рдЖрд░-рд╕реАрдПрдирдПрди
- рддреЗрдЬреА рд╕реЗ рдЖрд░-рдПрдирдПрди
- Yolo
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╡рд╛рдпреЛрд▓рд╛-рдЬреЛрдиреНрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдлреА рд╕рдЯреАрдХ рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрдЬрд╛рдЧрд░ рдЪреЗрд╣рд░реЗ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВред рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЪрдпрди рдХреНрд╖реЗрддреНрд░ рджреВрд╕рд░реЗ рдХреЗ рдЪрдпрди рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рдерд╛, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рджреЛрд╖реЛрдВ рдХреЗ рд╕рд╛рде рд╣реБрдЖ, рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪреЗрд╣рд░реЗ рдХреЗ рдЪрдпрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЪреЗрд╣рд░реЗ рд╡рд┐рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдПрдХ рдЫрд╡рд┐ рдореЗрдВ рдпрд╣ рджреЛрдиреЛрдВ рдХрд╛рдиреЛрдВ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ, рджреВрд╕рд░реЗ рдкрд░ рдХреЗрд╡рд▓ рдПрдХред рдЗрд╕ рддрд░рд╣ рдХреЗ рджреЛрд╖ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдХреЛ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдлреЛрдЯреЛ рдореЗрдВ, рдбреАрдПрд▓рдЖрдИрдмреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП, рдкрд┐рдЫрд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╣рдореЗрд╢рд╛ рдЪреЗрд╣рд░рд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛, рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЛ рдмрдЪрд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛)ред

рдЗрд╕рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ Dlib рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рд▓реИрдВрдбрдорд╛рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред
DlibDotNet рдорд┐рд▓рд╛, рдЬрд┐рд╕ рдкрд░ .Net рдХреЛрд░ рд▓рд┐рдЦрд╛ рд╣реИред .Net рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, .Net рдорд╛рдирдХ 2.0 рдкрд░ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдпреЛрдВ, рдЪреЗрд╣рд░реЗ рдХреА рдЦреЛрдЬ рдФрд░ рд▓реИрдВрдбрдорд╛рд░реНрдХ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдмрдирд╛рдИ рдЧрдИ рдереАред
C # рдХреЛрдб public int[] Face(byte[] bts, int row, int col, int st) { var img = Dlib.LoadImageData<RgbPixel> (ImagePixelFormat.Bgr, bts, (uint)row, (uint)col, (uint)st ); var face = faceDetector.Operator(img)[0]; int[] rect = { face.Left, face.Top, (int)face.Width, (int)face.Height}; return rect; } public List<int[]> FacePoints(byte[] bts, int row, int col, int st) { List<int[]> points = new List<int[]>(); var img = Dlib.LoadImageData<RgbPixel> (ImagePixelFormat.Bgr, bts, (uint)row, (uint)col, (uint)st); var face = faceDetector.Operator(img)[0]; var shape = shapePredictor.Detect(img, face); for (var i = 0; i < shape.Parts; i++) { var point = shape.GetPart((uint)i); points.Add(new int[] { point.X, point.Y }); } return points; }
рдлрд┐рд░ рдЙрдиреНрд╣реЛрдВрдиреЗ .Net рдлреНрд░реЗрдорд╡рд░реНрдХ 4.6.1 рдкрд░ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдЦрд╛, рдЬрд┐рд╕рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рднреА рддрд░реНрдХ рд▓рд╛рдЧреВ рдХрд┐рдПред
рд▓реИрдВрдЧрдорд╛рд░реНрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдмрд╛рдПрдВ, рджрд╛рдПрдВ, рдКрдкрд░реА рдФрд░ рдирд┐рдЪрд▓реЗ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдЙрди рдкрд░ рдлреНрд░реЗрдо рдмрдирд╛рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдлрд┐рд░ рдЪреЗрд╣рд░реЗ рдХреЛ рдирд┐рдЪрд▓реЗ рджрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ рддрд╕реНрд╡реАрд░ рд╕реЗ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдбрд╛рд▓рд╛ рдЧрдпрд╛ рдерд╛, рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЪрд┐рддреНрд░ рдореЗрдВ: "рдХреИрдмрд▓реЗрд░реЛ рдбреЗ рд▓рд╛ рдордиреЛ рдПрди рдПрд▓ рдкрд┐рдХреЛ"ред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рддрд╕реНрд╡реАрд░ рд╕реЗ 3 рдбреА рдорд╛рд╕реНрдХ рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рд╣реИред