рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЖрдкрдХреЛ рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ OpenCV, Python рдФрд░ ImageMagick рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдирд┐рдореЗрдЯреЗрдб GIF рдХреИрд╕реЗ рдмрдирд╛рдПрдВред рдлрд┐рд░ OpenCV рдХреЗ рд╕рд╛рде рдПрдХ рдореЗрдо рдЬрдирд░реЗрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░реЗрдВ!
рд╣рдо рд╕рднреА рдХреЛ рд╕рдордп-рд╕рдордп рдкрд░ рд╣рдВрд╕рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдФрд░ рд╢рд╛рдпрдж рд▓реБрд▓рдЬрд╛ рдХреЛ рдЦреЛрдЬрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдореЗрдореЛрдВ рдХреЗ рд╕рд╛рде рд╣реИред рдореЗрд░реЗ рдХреБрдЫ рдкрд╕рдВрджреАрджрд╛:
- Krogit рдореЗрдВрдврдХ: "рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░рд╛ рд╡реНрдпрд╡рд╕рд╛рдп рдирд╣реАрдВ рд╣реИ"
- рдХреНрд░реЛрдзреА рдмрд┐рд▓реНрд▓реА
- рдорд╣рд╛рдХрд╛рд╡реНрдп рдХреА рд╡рд┐рдлрд▓рддрд╛
- рдЕрдЪреНрдЫрд╛ рдЖрджрдореА рдЬреАрдЬреА
рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдореЗрдо "рдбреАрд▓ рд╡рд┐рде рдЗрдЯ" рдореЗрдо ("рдЗрд╕рдХреЗ рд╕рд╛рде рдбреАрд▓" рдпрд╛ "рдЗрд╕реЗ рдЦреБрдж рд╕рдордЭреЗрдВ") рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредрдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
- рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╡рд╛рдм рдпрд╛ рдЖрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ, рдЬреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рдХрд╛рдо рдХреЛ рдордВрдЬреВрд░реА рдирд╣реАрдВ рджреЗрддрд╛ / рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ("рдЗрд╕рдХреЗ рд╕рд╛рде рд╕реМрджрд╛")
- рдЕрдкрдиреЗ рдЪрд╢реНрдореЗ рдкрд░ рд░рдЦрдирд╛ рдорд╛рдиреЛ рдЖрдк рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рде рдЕрдХреЗрд▓рд╛ рдЫреЛрдбрд╝ рдХрд░ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ ("рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд╕рдордЭреЗрдВ")
рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рд▓реЗрдЦрдХ рдХреЗ рдмреНрд▓реЙрдЧ рдкрд░ рдПрдХ рдордЬреЗрджрд╛рд░ рд▓реЗрдЦ рдкрдврд╝рд╛ рдерд╛, рдЬрд┐рд╕реЗ рдпрд╛рдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрд╝рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореАрдореНрд╕ рдХреИрд╕реЗ рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкрд┐рдЫрд▓реЗ рд╣рдлреНрддреЗ рдореБрдЭреЗ рдпрд╣ рдЧрд╛рдЗрдб рдХрд╣реАрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЗрд╕рд▓рд┐рдП рдПрдХ рдмреНрд▓реЙрдЧрд░, рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрд╝рди рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдФрд░ рдореЗрдо рдкрд░ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдЦреБрдж рдПрдХ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛! (рд╡реИрд╕реЗ, рдЕрдЧрд░ рдЖрдк рдЧрд▓рддреА рд╕реЗ рдореВрд▓ рд╕реНрд░реЛрдд рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рддрд╛рдХрд┐ рдореИрдВ рд▓реЗрдЦрдХ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗ
рд╕рдХреВрдВ ред
UPD: рдмрд╕ рдХрд┐рд░реНрдХ рдХреИрд╕рд░ рдХреЗ рдмреНрд▓реЙрдЧ
MakeArtWithPython рд╕реЗ рдореВрд▓ рд▓реЗрдЦ рдорд┐рд▓рд╛)ред
OpenCV рдкрд░ рдореЗрдореЗ рдЬрдирд░реЗрдЯрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╣рдореЗрдВ рдХрдИ рдореВрд▓реНрдпрд╡рд╛рди рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХреМрд╢рд▓ рд╕рд┐рдЦрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- рдбреАрдк рд▓рд░реНрдирд┐рдВрдЧ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди
- рдЪреЗрд╣рд░реЗ рдХреА рдЬрдЧрд╣реЗрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рдЖрдВрдЦреЛрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП dlib рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
- рдкреНрд░рд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдВрдЦреЛрдВ рдХреЗ рдмреАрдЪ рд░реЛрдЯреЗрд╢рди рдХреЗ рдХреЛрдг рдХреА рдЧрдгрдирд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ
- рдФрд░ рдЕрдВрдд рдореЗрдВ, OpenCV рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдирд┐рдореЗрдЯреЗрдб GIF рдХреИрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ (ImageMagick рд╕реЗ рдереЛрдбрд╝реА рдорджрдж рдХреЗ рд╕рд╛рде)
рдпрд╣ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдордЬрд╝реЗрджрд╛рд░ рдФрд░ рдордиреЛрд░рдВрдЬрдХ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП - рдФрд░ рд╕рд╛рде рд╣реА рдЖрдкрдХреЛ рдореВрд▓реНрдпрд╡рд╛рди рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрд╝рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреМрд╢рд▓ рд╕рд┐рдЦрд╛рдПрдБ рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХрд╛рдо рдЖрддреЗ рд╣реИрдВред
OpenCV рдХреЗ рд╕рд╛рде GIF рдмрдирд╛рдирд╛
рдЧрд╛рдЗрдб рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рдЙрдЪрд┐рдд рд╡рд┐рдиреНрдпрд╛рд╕ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред
рдлрд┐рд░ рд╣рдорд╛рд░реЗ OpenCV GIF рдЬрдирд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ / рдХреИрдЯрд▓реЙрдЧ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдЬреИрд╕реЗ рд╣реА рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВ, рд╣рдо рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ: 1) рд╣рдорд╛рд░реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓; 2) OpenCV рдХреЗ рд╕рд╛рде GIF рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯред
рдЕрдВрдд рдореЗрдВ, рд╣рдо рд▓реЛрдХрдкреНрд░рд┐рдп рдореЗрдо "рдбреАрд▓ рд╡рд┐рдж рдЗрдЯ" рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВрдЧреЗред
рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛рдПрдБ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ
рдЕрдВрдЬреАрд░ред 1. рд╣рдо GIF рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП OpenCV, dlib рдФрд░ ImageMagick рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗOpencv рдФрд░ dlib
OpenCV рдХреЛ рдлреНрд░реЗрдо рдФрд░ рдмреЗрд╕рд┐рдХ рдЗрдореЗрдЬ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдореЗрдВ рдЪреЗрд╣рд░реЗ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдпрджрд┐ рд╕рд┐рд╕реНрдЯрдо рдкрд░
OpenCV рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ
рд╣реИ, рддреЛ рдореЗрд░реЗ рдХрд┐рд╕реА
OpenCV рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЧрд╛рдЗрдб рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред
рд╣рдо рдЪреЗрд╣рд░реЗ рдХреА рд╕реНрдерд▓реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрд▓рд┐рдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рдЪреЗрд╣рд░реЗ рдкрд░ рджреЛ рдЖрдБрдЦреЗрдВ рдЦреЛрдЬрдиреЗ рдФрд░ рдзреВрдк рдХрд╛ рдЪрд╢реНрдорд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдк
рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ dlib рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
ImageMagick
рдпрджрд┐ рдЖрдк
ImageMagick рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╡реНрдпрд░реНрде рдореЗрдВред рдпрд╣ рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдЗрдореЗрдЬ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдлреАрдЪрд░реНрд╕ рд╣реИрдВред
рдХреНрдпрд╛ рдЖрдк PNG / JPG рдХреЛ рдПрдХ рдХрдорд╛рдВрдб рд╕реЗ PDF рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВред
рдХрдИ рдЫрд╡рд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд┐рдирд╕реЗ рдЖрдкрдХреЛ рдПрдХ рдмрд╣реБ-рдкреГрд╖реНрда рдкреАрдбреАрдПрдл рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЖрд╕рд╛рдиреА рд╕реЗред
рдмрд╣реБрднреБрдЬ, рд░реЗрдЦрд╛рдУрдВ рдФрд░ рдЕрдиреНрдп рдЖрдХреГрддрд┐рдпреЛрдВ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдФрд░ рдпрд╣ рд╕рдВрднрд╡ рд╣реИред
рдХреИрд╕реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреИрдЪ рд░рдВрдЧ рдЧреНрд░реЗрдбрд┐рдВрдЧ рдпрд╛ рдПрдХ рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде рд╕рднреА рдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ? рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ OpenCV рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдореЗрдВ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
ImageMagick рдХрд┐рд╕реА рднреА рдЗрдореЗрдЬ рд╕реЗ GIF рднреА рдмрдирд╛рддрд╛ рд╣реИред
Ubuntu (рдпрд╛ рд░рд╛рд╕реНрдкрд┐рдпрди) рдкрд░ ImageMagick рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ apt рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
OpenCVShell рдХреЗ рд╕рд╛рде GIF рдмрдирд╛рдирд╛
$ sudo apt-get install imagemagick
MacOS рдкрд░, рдЖрдк HomeBrew рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
$ brew install imagemagick
imutils
рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЗрдЦреЛрдВ, рдкрд╛рдареНрдпрдХреНрд░рдореЛрдВ рдФрд░ рдкреБрд╕реНрддрдХреЛрдВ рдореЗрдВ, рдореИрдВ рдЕрдкрдиреЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ
imutils рдЫрд╡рд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг
рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
$ pip install imutils
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛
рдЕрдВрдЬреАрд░ред 2. рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рджреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ, рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдФрд░ рдПрдХ рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИрдВрд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рджреЛ рдХреИрдЯрд▓реЙрдЧ рд╣реИрдВ:
images/
: рдЗрдирдкреБрдЯ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдЬрд┐рдирдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рдПрдирд┐рдореЗрдЯреЗрдб GIF рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдЕрдкрдиреЗ рд╕рд╛рде рдХреБрдЫ рдЫрд╡рд┐рдпрд╛рдВ рдорд┐рд▓реАрдВ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВредassets/
: рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣рдорд╛рд░рд╛ рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрдЯрд░, рдлреЗрд╕ рд▓реИрдВрдбрдорд╛рд░реНрдХ рдбрд┐рдЯреЗрдХреНрдЯрд░ рдФрд░ рд╕рднреА рдЪрд┐рддреНрд░ + рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рд╕реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрди рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рд╣рдо рдкрд╣рд▓реЗ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдореВрд▓ рдЪрд┐рддреНрд░реЛрдВ рдкрд░ рдЕрдВрдХ рдФрд░ рдкрд╛рда рдбрд╛рд▓реЗрдВрдЧреЗред
рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдХрд╛рд░рдг, рдореИрдВрдиреЗ JSON рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдЬреЛ: 1) рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рдВрдкрд╛рджрди рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛; 2) рдХрдо рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рд╡рд┐рдиреНрдпрд╛рд╕ рдкреИрд░рд╛рдореАрдЯрд░
config.json
рдореЗрдВ рд╕рдореНтАНрдорд┐рд▓рд┐рдд рд╣реИрдВред
config.json
рдФрд░
create_gif.py
рдХреА рд╕рд╛рдордЧреНрд░реА рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рд▓рдЧрднрдЧред рдкреНрд░рддрд┐: рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рдФрд░ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрд╝рди, рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдФрд░ OpenCV рдкрд░ 17-рдкреЗрдЬ рдореИрдиреБрдЕрд▓ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рдмрд╛рдж рдЬрд╛рд░реА рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рджрд░реНрдкрдг: рд╕реНрд░реЛрдд рдХреЛрдб , рдореИрдиреБрдЕрд▓ )редOpenCV рдХреЗ рд╕рд╛рде GIF рдЬрдирд░реЗрд╢рди
рддреЛ, рдЪрд▓рд┐рдП рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдирд╛ OpenCV GIF рдЬрдирд░реЗрдЯрд░ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ!
JSON рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА
рдЖрдЗрдП JSON рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдЬрд╛рдПрдВред
рдПрдХ рдирдпрд╛
config.json
рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреБрдВрдЬреА / рдорд╛рди рдЬреЛрдбрд╝реЗ рдбрд╛рд▓реЗрдВ:
OpenCVPththon рдХреЗ рд╕рд╛рде GIF рдмрдирд╛рдирд╛
{ "face_detector_prototxt": "assets/deploy.prototxt", "face_detector_weights": "assets/res10_300x300_ssd_iter_140000.caffemodel", "landmark_predictor": "assets/shape_predictor_68_face_landmarks.dat",
рдпреЗ
OpenCV рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрдЯрд░ рдореЙрдбрд▓ рдлрд╛рдЗрд▓реНрд╕
рдбреАрдк рд▓рд░реНрдирд┐рдВрдЧ рдореЗрдВ рд╣реИрдВ ред
рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ dlib рдлреЗрд╕ рдкреНрд░реЗрдбрд┐рдХреНрдЯрд░ рдХрд╛ рдорд╛рд░реНрдЧ рд╣реИред
рдФрд░ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрдореЗрдЬ рдлрд╛рдЗрд▓ рдХреЗ рдХреБрдЫ рд░рд╛рд╕реНрддреЗ рд╣реИрдВ:
"sunglasses": "assets/sunglasses.png", "sunglasses_mask": "assets/sunglasses_mask.png", "deal_with_it": "assets/deal_with_it.png", "deal_with_it_mask": "assets/deal_with_it_mask.png",
рдпреЗ рд╣рдорд╛рд░реЗ рдзреВрдк рдХреЗ рдЪрд╢реНрдореЗ, рдкрд╛рда рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рд░рд╛рд╕реНрддреЗ рд╣реИрдВ, рдЬреЛ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдлреИрдВрд╕реА рдзреВрдк рдХрд╛ рдЪрд╢реНрдорд╛ рдФрд░ рдПрдХ рдореБрдЦреМрдЯрд╛:
рдЕрдВрдЬреАрд░ред 3. рдЖрдкрдХреЛ рдкрд┐рдХреНрд╕рд▓ рд╡рд╛рд▓реЗ рдЪрд╢реНрдореЗ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИрдВ? рдмрд╕ рдЗрд╕рдХреЗ рд╕рд╛рде рд░рдЦреЛрдЕрдВрдЬреАрд░ред 4. рдЖрдкрдХреЛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдЖрдкрдХреЛ рдзреВрдк рдХреЗ рдЪрд╢реНрдореЗ рдХреЗ рд▓рд┐рдП рдорд╛рд╕реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдмрд╕ рдЗрд╕рдХреЗ рд╕рд╛рде рд░рдЦреЛ - рдпрд╛ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдмрд╛рдХреА рд▓реЗрдЦ рдкрдврд╝реЗрдВредрдФрд░ рдЕрдм рд╣рдорд╛рд░рд╛ рдкрд╛рда "рдЖрдИрдЯреА рдХреЗ рд╕рд╛рде рд╕реМрджрд╛" рдФрд░ рдореБрдЦреМрдЯрд╛ рд╣реИ:
рдЕрдВрдЬреАрд░ред 5. рдХреНрдпрд╛ рдЖрдк Helvetica Neue Condensed рд╕реЗ рдирдлрд░рдд рдХрд░рддреЗ рд╣реИрдВ? рдЗрд╕рд╕реЗ рдирд┐рдкрдЯреЛрдЕрдВрдЬреАрд░ред 6: рдпрд╣ рдореБрдЦреМрдЯрд╛ рдЖрдкрдХреЛ рдкрд╛рда рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд╕реАрдорд╛ рдЦреАрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдУрд╣, рд╢рд╛рдпрдж рдЖрдк рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ, рдХреНрдпрд╛ рдЖрдк рдПрдХ рд╕реАрдорд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдареАрдХ рд╣реИ, рдЗрд╕рдХреЗ рд╕рд╛рде рд░рдЦреЛрдлреЛрдЯреЛ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдЫрд╡рд┐ рдХреЛ рдУрд╡рд░рд▓реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рд╕реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рд╣рдо рдмрд╛рдж рдореЗрдВ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯреЗрдВрдЧреЗред
рдЕрдм рдореЗрдо рдЬрдирд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░реЗрдВ:
"min_confidence": 0.5, "steps": 20, "delay": 5, "final_delay": 250, "loop": 0, "temp_dir": "temp" }
рдпрд╣рд╛рдБ рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рджреА рдЧрдИ рд╣реИрдВ:
min_confidence
: рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХ рдЪреЗрд╣рд░рд╛ рдкрд╣рдЪрд╛рди рд╕рдВрднрд╛рд╡рдирд╛редsteps
: рдЕрдВрддрд┐рдо рдПрдиреАрдореЗрд╢рди рдореЗрдВ рдлрд╝реНрд░реЗрдо рдХреА рд╕рдВрдЦреНрдпрд╛ред рдкреНрд░рддреНрдпреЗрдХ "рд╕реНрдЯреЗрдк" рдзреВрдк рдХреЗ рдЪрд╢реНрдореЗ рдХреЛ рдКрдкрд░реА рд╕реАрдорд╛ рд╕реЗ рдиреАрдЪреЗ рд▓рдХреНрд╖реНрдп (рдпрд╛рдиреА рдЖрдВрдЦреЛрдВ рдХреЗ рд▓рд┐рдП) рддрдХ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИредdelay
: рд╕реЗрдХрдВрдб рдХреЗ рд╕реМрд╡реЗрдВ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдлреНрд░реЗрдо рдХреЗ рдмреАрдЪ рджреЗрд░реАредfinal_delay
: рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ рд╕реМрд╡реЗрдВ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдЕрдВрддрд┐рдо рдлреНрд░реЗрдо рдореЗрдВ рджреЗрд░реА (рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдкрдпреЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдкрд╛рда рдмрд╛рдХреА рдлрд╝реНрд░реЗрдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛ)редloop
: рдПрдХ рд╢реВрдиреНрдп рдорд╛рди рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЬреАрдЖрдИрдПрдл рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рджреЛрд╣рд░рд╛рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдПрдиреАрдореЗрд╢рди рдХреЗ рджреЛрд╣рд░рд╛рд╡ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреВрд░реНрдгрд╛рдВрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВредtemp_dir
: рдЕрдВрддрд┐рдо рдЬреАрдЖрдИрдПрдл рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрд╕реНрдерд╛рдпреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реНрд░реЗрдо рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдореЗрдо, GIF рдФрд░ OpenCV
рд╣рдордиреЗ JSON рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ, рдЕрдм рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред
рдПрдХ рдирдИ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ, рдЗрд╕реЗ
create_gif.py
рдирд╛рдо рджреЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ:
рдпрд╣рд╛рдВ рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╣рдо imutils, dlib рдФрд░ OpenCV рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЗрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдКрдкрд░ рджрд┐рдП рдЧрдП рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛рдПрдБ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЕрдиреБрднрд╛рдЧ рджреЗрдЦреЗрдВред
рдЕрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рд╣реИрдВ, рддреЛ
overlay_image
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
def overlay_image(bg, fg, fgMask, coords):
overlay_image
рдлрдВрдХреНрд╢рди, рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЗрдореЗрдЬ (
bg
) рдХреЗ рдКрдкрд░
fgMask
( рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ
(x, y) ) рдкрд░ рдПрдХ рдЕрдЧреНрд░рднреВрдорд┐ (
fg
) рд▓рдЧрд╛рддрд╛ рд╣реИ, рдЬреЛ
fgMask
рдлреЛрд░рдЧреНрд░рд╛рдЙрдВрдб рдорд╛рд╕реНрдХ рдкрд░ рдЕрд▓реНрдлрд╛ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХрд╛ рдПрд╣рд╕рд╛рд╕
fgMask
рд╣реИред
рдУрдкрдирд╕реАрд╡реА рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╕реЗ рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ рдорд╛рд╕реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛,
рдЗрд╕ рдЧрд╛рдЗрдб рдХреЛ рдкрдврд╝рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред
рд╕рдореНрдорд┐рд╢реНрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрд▓реНрдлрд╛ рд╕рдореНрдорд┐рд╢реНрд░рдг рдХрд░реЗрдВ:
def alpha_blend(fg, bg, alpha):
рдпрд╣ рдЕрд▓реНрдлрд╛ рдмреНрд▓реЗрдВрдбрд┐рдВрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
LearnOpenCV рдмреНрд▓реЙрдЧ рдкрд░ рднреА рдЙрдкрд▓рдмреНрдз рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╣рдо рдЕрдЧреНрд░рднреВрдорд┐, рдкреГрд╖реНрдарднреВрдорд┐ рдФрд░ рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ рдХреЛ рдЕрд╕реНрдерд╛рдпреА рдмрд┐рдВрджреБрдУрдВ рдХреА рд╕реАрдорд╛ рдореЗрдВ рдмрджрд▓ рджреЗрдВрдЧреЗ
[0, 1] ред рдлрд┐рд░ рд╣рдо рдЕрд▓реНрдлрд╛ рд╕рдореНрдорд┐рд╢реНрд░рдг рдХрд░рддреЗ рд╣реИрдВ, рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рднреВрдорд┐ рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдо рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВред
рд╣рдо рдПрдХ рд╕рд╣рд╛рдпрдХ рдлрд╝рдВрдХреНрд╢рди рднреА рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ ImageMagick рдФрд░
convert
рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫрд╡рд┐ рдкрдереЛрдВ рдХреЗ рд╕реЗрдЯ рд╕реЗ GIF рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
def create_gif(inputPath, outputPath, delay, finalDelay, loop):
create_gif
рдлрд╝рдВрдХреНрд╢рди рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдлрд╝реНрд░реЗрдо рдФрд░ рдЫреЛрд░реЛрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рджреЗрд░реА рдХреЗ рд╕рд╛рде GIF рдПрдирд┐рдореЗрд╢рди рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рддрд╛ рд╣реИред ImageMagick рдпрд╣ рд╕рдм рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ - рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ
convert
рдХрдорд╛рдВрдб рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдЙрдкрд▓рдмреНрдз
convert
рддрд░реНрдХ
рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВ ред рд╡рд╣рд╛рдБ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЗрд╕ рдЯреАрдо рдХреЗ рдХрд┐рддрдиреЗ рдХрд╛рд░реНрдп рд╣реИрдВ!
рдЗрд╕ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╣рдо:
imagePaths
рд▓реЗрдВред- рдЕрдВрддрд┐рдо рдЫрд╡рд┐ рдХрд╛ рдкрде рдЪреБрдиреЗрдВ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд▓рдВрдм рд╣реЛрдЧрд╛ред
- рдЕрдВрддрд┐рдо рдкрде рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
imagePaths
рдкреБрди: рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред - рд╣рдо рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдорд╛рдВрдб рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ GIF рдПрдирд┐рдореЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП
convert
рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджреЗрддреЗ рд╣реИрдВред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдкрдиреА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ:
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддреАрди рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
--config
: JSON рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрдеред рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреАред--image
: рдЗрдирдкреБрдЯ рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдкрде, рдЬрд┐рд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдиреАрдореЗрд╢рди рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╛рдиреА рдЪреЗрд╣рд░реЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛, рдзреВрдк рдХрд╛ рдЪрд╢реНрдорд╛ рдЬреЛрдбрд╝рдирд╛, рдФрд░ рдлрд┐рд░ рдкрд╛рда)ред--output
: рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк GIF рдХреЗ рд▓рд┐рдП рдкрдеред
рдХрдорд╛рдВрдб рд▓рд╛рдЗрди / рдЯрд░реНрдорд┐рдирд▓ рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рддреЗ рд╕рдордп рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рддрд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓, рд╕рд╛рде рд╣реА рдЪрд╢реНрдорд╛ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рд╕реНрдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ:
рдпрд╣рд╛рдВ рд╣рдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ (рдЬреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкрд╛рдпрдерди рдбрд┐рдХреНрд╢рдирд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛ рд╕рдХрддреА рд╣реИ)ред рдлрд┐рд░ рдзреВрдк рдХрд╛ рдЪрд╢реНрдорд╛ рдФрд░ рдореБрдЦреМрдЯрд╛ рд▓реЛрдб рдХрд░реЗрдВред
рдпрджрд┐ рдкрд┐рдЫрд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХреБрдЫ рд░рд╣рддрд╛ рд╣реИ, рддреЛ рдЕрд╕реНрдерд╛рдпреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣рдЯрд╛рдПрдВ, рдФрд░ рдлрд┐рд░ рдЦрд╛рд▓реА рдЕрд╕реНрдерд╛рдпреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдПрдБред рдЕрд╕реНрдерд╛рдпреА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬреАрдЖрдИрдПрдл рдПрдиреАрдореЗрд╢рди рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдлреНрд░реЗрдо рд╣реЛрдЧрд╛ред
рдЕрдм
OpenCV рдбреАрдк рд▓рд░реНрдирд┐рдВрдЧ рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрдЯрд░ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░реЗрдВ:
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
cv2.dnn.readNetFromCaffe
рдХреЙрд▓ рдХрд░реЗрдВред
dnn
рдореЙрдбреНрдпреВрд▓ рдХреЗрд╡рд▓ OpenCV 3.3 рдпрд╛ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред рдПрдХ рдЪреЗрд╣рд░рд╛ рдбрд┐рдЯреЗрдХреНрдЯрд░ рдЫрд╡рд┐ рдореЗрдВ рдЪреЗрд╣рд░реЗ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдЧрд╛:
рдЕрдВрдЬреАрд░ред 7. OpenCV DNN рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрдЯрд░ рдСрдкрд░реЗрд╢рдирдлрд┐рд░
dlib рдлреЗрд╕ рд▓реИрдВрдбрдорд╛рд░реНрдХ рдкреНрд░реЗрдбрд┐рдХреНрдЯрд░ рд▓реЛрдб рдХрд░реЗрдВред рдпрд╣ рдЖрдкрдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛: рдЖрдБрдЦреЗрдВ, рднреМрдВ, рдирд╛рдХ, рдореБрдВрд╣ рдФрд░ рдареЛрдбрд╝реА рд░реЗрдЦрд╛:
рдЕрдВрдЬреАрд░ред 8. dlib рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬреЗ рдЧрдП рд╕реНрдерд▓ рдореЗрд░реЗ рдЪреЗрд╣рд░реЗ рдкрд░ рдЕрдВрдХрд┐рдд рд╣реИрдВрдмрд╛рдж рдореЗрдВ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╣рдо рдХреЗрд╡рд▓ рдЖрдВрдЦ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВред
рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдЪрд▓реЛ рдЪреЗрд╣рд░рд╛ рдорд┐рд▓:
рдЗрд╕ рдмреНрд▓реЙрдХ рдореЗрдВ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ:
- рдореВрд▓
image
рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред - рд╣рдо рдПрдХ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрдЯрд░ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ
blob
рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЖрд▓реЗрдЦ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ OpenCV рд╕реЗ blobFromImage
рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред - рдЪреЗрд╣рд░рд╛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдВред
- рд╣рдо рдЙрдЪреНрдЪрддрдо рд╕рдВрднрд╛рд╡рдирд╛ рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдкрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдиреНрдпреВрдирддрдо рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдВрднрд╛рд╡рдирд╛ рд╕реАрдорд╛ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдорд╛рдирджрдВрдб рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВред рдЕрдиреНрдпрдерд╛, рдЬрд╛рд░реА рд░рдЦреЗрдВред
рдЕрдм рд╣рдо рдЪреЗрд╣рд░реЗ рдХреЛ рдирд┐рдХрд╛рд▓реЗрдВрдЧреЗ рдФрд░ рд╕реНрдерд▓реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВрдЧреЗ:
рдЪреЗрд╣рд░реЗ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рдЪреЗрд╣рд░реЗ рдХреЗ рд╕реНрдерд╛рди рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ:
- рд╣рдо рдЪреЗрд╣рд░реЗ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВред
- Dlib рдореЗрдВ рдПрдХ
rectangle
рд╡рд╕реНрддреБ рдмрдирд╛рдПрдБ рдФрд░ рдЪреЗрд╣рд░реЗ рдХрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рд▓рд╛рдЧреВ рдХрд░реЗрдВред - рд╣рдо рдХреНрд░рдорд╢рдГ
leftEyePts
рдФрд░ rightEyePts
leftEyePts
рдХреА leftEyePts
x (y, рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ ) рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
рдЖрдВрдЦреЛрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЖрдк рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдзреВрдк рдХрд╛ рдЪрд╢реНрдорд╛ рдХрд╣рд╛рдВ рдФрд░ рдХреИрд╕реЗ рд▓рдЧрд╛рдПрдВ:
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЖрдВрдЦ рдХреЗ рдХреЗрдВрджреНрд░ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╕реЗрдВрдЯреНрд░реЛрдЗрдбреНрд╕ рдХреЗ рдмреАрдЪ рдХрд╛ рдХреЛрдгред
рдлрд╝реНрд░реЗрдо рдореЗрдВ рдЪреЗрд╣рд░реЗ рдХреЗ рдХреНрд╖реИрддрд┐рдЬ
рд╕рдВрд░реЗрдЦрдг рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдСрдкрд░реЗрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдм рдЖрдк рдЪрд╢реНрдореЗ рдХреЛ рдШреБрдорд╛ рдФрд░ рдЖрдХрд╛рд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо
рд░реЛрдЯреЗрдЯ_рдмрд╛рдЙрдВрдб рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ
рдХрд░рддреЗ рд╣реИрдВ , рди рдХрд┐ рдХреЗрд╡рд▓
rotate
, рддрд╛рдХрд┐
рдУрдкрдирд╕реАрд╡реА рдЙрди рднрд╛рдЧреЛрдВ рдХреЛ рдЯреНрд░рд┐рдо рди рдХрд░реЗрдВ рдЬреЛ рдХрд┐
рдПрдлрд╛рдЗрди рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд╛рдж рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред
рд╡рд╣реА рдСрдкрд░реЗрд╢рди рдЬреЛ рдЪрд╢реНрдореЗ рдкрд░ рд▓рдЧрд╛рдП рдЧрдП рдереЗ, рдорд╛рд╕реНрдХ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЧреНрд░реЗ рдФрд░ рдмрд┐рдирд╛рд░рд╛рдЗрдЬрд╝ рдХреЗ рд░рдВрдЧреЛрдВ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдорд╛рд╕реНрдХ рд╣рдореЗрд╢рд╛ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╣реЛрддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдореБрдЦреМрдЯреЗ рдХреЛ рдШреБрдорд╛рддреЗ рдФрд░ рдЖрдХрд╛рд░ рджреЗрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рд╣рдордиреЗ рдЪрд╢реНрдореЗ рд╕реЗ рдХрд┐рдпрд╛ рдерд╛ред
рдиреЛрдЯ: рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдорд╛рд╕реНрдХ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рддреЗ рд╕рдордп, рд╣рдо рдирд┐рдХрдЯрддрдо рдкрдбрд╝реЛрд╕реА рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд╖реЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдорд╛рд╕реНрдХ рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рдорд╛рди (0 рдФрд░ 255) рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдп рдкреНрд░рдХреНрд╖реЗрдк рд╡рд┐рдзрд┐рдпрд╛рдВ рдЕрдзрд┐рдХ рд╕реМрдВрджрд░реНрдпрд╡рд╛рджреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдорд╛рд╕реНрдХ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВред рдпрд╣рд╛рдВ рдЖрдк рдирд┐рдХрдЯрддрдо рдкрдбрд╝реЛрд╕реА рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдкреНрд░рдХреНрд╖реЗрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрдХреЛрдб рдХреЗ рд╢реЗрд╖ рддреАрди рдмреНрд▓реЙрдХ GIF рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП рдлреНрд░реЗрдо рдмрдирд╛рддреЗ рд╣реИрдВ:
рдЫрд╡рд┐ рдХреЗ рдКрдкрд░ рд╕реЗ рдЪрд╢реНрдорд╛ рдЧрд┐рд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдкрд░, рдЙрдиреНрд╣реЗрдВ рдЪреЗрд╣рд░реЗ рдХреЗ рдХрд░реАрдм рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╡реЗ рдЕрдкрдиреА рдЖрдВрдЦреЛрдВ рдХреЛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддреЗред JSON рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
"steps"
рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдХреЗ рд▓рд┐рдП y-рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╣реБрдд рдкреНрд░рдпрд╛рд╕ рдХреЗ рдмрд┐рдирд╛, рд╣рдо NumPy рд╕реЗ рд▓рд┐рдВрдЪрд╕реНрдкреЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдмрд╛рдИрдВ рдФрд░ рдКрдкрд░ рдХреА рдУрд░ рдереЛрдбрд╝реА рд╕реА рдмрджрд▓рд╛рд╡ рд╡рд╛рд▓реА рд░реЗрдЦрд╛рдПрдВ рдереЛрдбрд╝реА рдЕрдЬреАрдм рд▓рдЧ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЪрд╢реНрдорд╛ рдЖрдВрдЦреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╡рд░ рдХрд░реЗрдВ, рдФрд░ рди рдХреЗрд╡рд▓ рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЬрд╛рдПрдВ рдЬрд╣рд╛рдВ рдЖрдВрдЦ рдХрд╛ рдХреЗрдВрджреНрд░ рд╣реИред рдореИрдВрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдСрдлрд╕реЗрдЯ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрднрд╡рдЬрдиреНрдп рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рд╢рдд рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдХреЛрдИ рдирдХрд╛рд░рд╛рддреНрдордХ рдорд╛рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИред
overlay_image
рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ,
overlay_image
рдЕрдВрддрд┐рдо
output
рдлрд╝реНрд░реЗрдо рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред
рдЕрдм рдПрдХ рдЕрдиреНрдп рдореБрдЦреМрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ "рдЖрдИрдЯреА рдХреЗ рд╕рд╛рде рд╕реМрджрд╛" рдкрд╛рда рд▓рд╛рдЧреВ рдХрд░реЗрдВ:
рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ рд╣рдо рдкрд╛рда рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдФрд░ рдЫрд╡рд┐ рд╣реИред
рдореИрдВрдиреЗ рдПрдХ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ OpenCV рдлреЛрдВрдЯ рдХреА рдкреНрд░рддрд┐рдкрд╛рджрди рдХреНрд╖рдорддрд╛рдПрдВ рдХрд╛рдлреА рд╕реАрдорд┐рдд рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдкрд╛рда рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдЫрд╛рдпрд╛ рдФрд░ рдПрдХ рд╕реАрдорд╛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЬреЛ рдлрд┐рд░ рд╕реЗ OpenCV рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдХреИрд╕реЗред
рдЗрд╕ рдХреЛрдб рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ, рд╣рдо рдЫрд╡рд┐ рдФрд░ рдореБрдЦреМрдЯрд╛ рджреЛрдиреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓реНрдлрд╛ рд╕рдореНрдорд┐рд╢реНрд░рдг рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рдЬреАрдЖрдИрдПрдл-рдПрдиреАрдореЗрд╢рди рдХреЗ рдмрд╛рдж рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдХреЛ рдбрд┐рд╕реНрдХ рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реА рд░рд╣рддрд╛ рд╣реИ:
рд╣рдо рдбрд┐рд╕реНрдХ рдкрд░ рдкрд░рд┐рдгрд╛рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВред рд╕рднреА рдлрд╝реНрд░реЗрдореЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо GIF рдПрдиреАрдореЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП
create_gif
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рдПрдХ рд╢реЗрд▓ рд╣реИ рдЬреЛ рдЗрдореЗрдЬрдореИрдЬрд┐рдХ
convert
рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдЯреВрд▓ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рдЕрдВрдд рдореЗрдВ, рдЕрд╕реНрдерд╛рдпреА рдЖрдЙрдЯрдкреБрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред
рдкрд░рд┐рдгрд╛рдо
рдЕрдм рдордЬрд╝реЗрджрд╛рд░ рд╣рд┐рд╕реНрд╕рд╛: рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдореЗрдо рдЬрдирд░реЗрдЯрд░ рдиреЗ рдХреНрдпрд╛ рдмрдирд╛рдпрд╛ рд╣реИ!
рд╕реНрд░реЛрдд рдХреЛрдб, рдирдореВрдирд╛ рдЪрд┐рддреНрд░ рдФрд░ рдЧрд╣рди рд╢рд┐рдХреНрд╖рдг рдореЙрдбрд▓
рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред рдлрд┐рд░ рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:
$ python create_gif.py --config config.json --image images/adrian.jpg \ --output adrian_out.gif [INFO] loading models... [INFO] computing object detections... [INFO] creating GIF... [INFO] cleaning up...
рдЪрд┐рддреНрд░ 9. рдЗрд╕ рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде OpenCV рдФрд░ ImageMagick рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди GIF рдПрдиреАрдореЗрд╢рдирдпрд╣рд╛рдВ рдЖрдк OpenCV рдФрд░ ImageMagick рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдП рдЧрдП рдЬреАрдЖрдИрдПрдл рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкрд░ рдирд┐рдореНрди рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВ:
- рдореЗрд░реЗ рдЪреЗрд╣рд░реЗ рдХреА рд╕рд╣реА рдкрд╣рдЪрд╛рдиред
- рдЖрдВрдЦреЛрдВ рдХрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдФрд░ рдЙрдирдХреЗ рдХреЗрдВрджреНрд░реЛрдВ рдХреА рдЧрдгрдирд╛ред
- рдЪреЗрд╣рд░реЗ рдкрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЪрд╢реНрдорд╛ рдкрдбрд╝ рдЬрд╛рддрд╛ рд╣реИред
рдореЗрд░реЗ рдмреНрд▓реЙрдЧ рдХреЗ рдкрд╛рдардХреЛрдВ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЬреБрд░рд╛рд╕рд┐рдХ рдкрд╛рд░реНрдХ рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдмреЗрд╡рдХреВрдл рд╣реВрдВ рдФрд░ рдЕрдХреНрд╕рд░ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдореЗрд░реА рдкреБрд╕реНрддрдХреЛрдВ, рдкрд╛рдареНрдпрдХреНрд░рдореЛрдВ рдФрд░ рдЕрдзреНрдпрдпрди рдЧрд╛рдЗрдбреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЬреБрд░рд╛рд╕рд┐рдХ рдкрд╛рд░реНрдХ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ?
рдареАрдХ рд╣реИ, рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдЬрд╡рд╛рдм рд╣реИ:
$ python create_gif.py --config config.json --image images/adrian_jp.jpg \ --output adrian_jp_out.gif [INFO] loading models... [INFO] computing object detections... [INFO] creating GIF... [INFO] cleaning up...
рдЕрдВрдЬреАрд░ред 10. OpenCV GIF рдПрдиреАрдореЗрд╢рди, рдЬреБрд░рд╛рд╕рд┐рдХ рд╡рд░реНрд▓реНрдб 2 рдХреА рд╣рд╛рд▓рд┐рдпрд╛ рд╕реНрдХреНрд░реАрдирд┐рдВрдЧ рдХреА рддрд╕реНрд╡реАрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдпрд╣рд╛рдВ рдореИрдВ рдПрдХ рд╡рд┐рд╖рдпрдЧрдд рдЯреА-рд╢рд░реНрдЯ рдореЗрдВ "рдЬреБрд░рд╛рд╕рд┐рдХ рд╡рд░реНрд▓реНрдб: 2" рд╢реЛ рдореЗрдВ рдПрдХ рдЧрд┐рд▓рд╛рд╕ рдкреНрд░рдХрд╛рд╢ рдФрд░ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдкреБрд╕реНрддрдХ рдХреЗ рд╕рд╛рде рд╣реВрдВред
рдордЬреЗрджрд╛рд░ рдХрд╣рд╛рдиреА:
рдкрд╛рдВрдЪ рдпрд╛ рдЫрд╣ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдореЗрд░реА рдкрддреНрдиреА рдФрд░ рдореИрдВрдиреЗ рдбрд┐рдЬреНрдиреА рд╡рд░реНрд▓реНрдб, рдлреНрд▓реЛрд░рд┐рдбрд╛ рдореЗрдВ рдПрдкрдХреЛрдЯ рд╕реЗрдВрдЯрд░ рдереАрдо рдкрд╛рд░реНрдХ рдХрд╛ рджреМрд░рд╛ рдХрд┐рдпрд╛ред
рд╣рдо рдХрдиреЗрдХреНрдЯрд┐рдХрдЯ рдореЗрдВ рдХрдареЛрд░ рд╕рд░реНрджрд┐рдпреЛрдВ рд╕реЗ рджреВрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдпрд╛рддреНрд░рд╛ рд▓реЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдФрд░ рд╕рдЦреНрдд рдзреВрдк рдХреА рдЬрд░реВрд░рдд рдереАред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдлреНрд▓реЛрд░рд┐рдбрд╛ рдореЗрдВ рд╣рд░ рд╕рдордп рдмрд╛рд░рд┐рд╢ рд╣реБрдИ, рдФрд░ рддрд╛рдкрдорд╛рди рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ 10 рдбрд┐рдЧреНрд░реА рд╕реЗрд▓реНрд╕рд┐рдпрд╕ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдпрд╛ред
рдХреИрдиреЗрдбрд┐рдпрди рдЧрд╛рд░реНрдбрди рдХреЗ рдкрд╛рд╕, рддреГрд╖рд╛ рдиреЗ рдореЗрд░реА рдПрдХ рддрд╕реНрд╡реАрд░ рд▓реА: рд╡рд╣ рдХрд╣рддреА рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рдЪрдордбрд╝реА рдХреА рддрд░рд╣ рджрд┐рдЦрддреА рд╣реВрдБ рдЬрд┐рд╕рдореЗрдВ рдкреАрдЫреЗ рдХреА рдУрд░ рд╣рд░реЗ-рднрд░реЗ рдмрдЧреАрдЪреЗ, рдХрд╛рд▓реЗ рдХрдкрдбрд╝реЗ рдФрд░ рдПрдХ рд╣реБрдб, рд╣рд░реЗ-рднрд░реЗ рдмрдЧреАрдЪреЛрдВ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╣реИ:
$ python create_gif.py --config config.json --image images/vampire.jpg \ --output vampire_out.gif [INFO] loading models... [INFO] computing object detections... [INFO] creating GIF... [INFO] cleaning up...
рдЕрдВрдЬреАрд░ред 11. OpenCV рдФрд░ рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЗрд╕ рдореЗрдо рдпрд╛ рдПрдХ рдФрд░ рдПрдирд┐рдореЗрдЯреЗрдб GIF рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВрдЙрд╕реА рд╢рд╛рдо, рддреНрд░рд┐рд╢рд╛ рдиреЗ рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдПрдХ рддрд╕реНрд╡реАрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреА - рдореБрдЭреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдерд╛ред
рдЖрдк рдореЗрдВ рд╕реЗ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ PyImageConf 2018 рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ (
рд╕рдореАрдХреНрд╖рд╛ рдкрдврд╝реЗрдВ ) рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рд╣рдореЗрд╢рд╛ рдЪреБрдЯрдХреБрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реВрдВред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
рдкреНрд░рд╢реНрди: рдореБрд░реНрдЧрд╛ рд╕рдбрд╝рдХ рдкрд╛рд░ рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реИ? $ python create_gif.py --config config.json --image images/rooster.jpg \ --output rooster_out.gif [INFO] loading models... [INFO] computing object detections... [INFO] creating GIF... [INFO] cleaning up...
рдЕрдВрдЬреАрд░ред 12. рдЪреЗрд╣рд░рд╛ рдХрдо рд╡рд┐рдкрд░реАрдд рдХреЗ рд╕рд╛рде рднреА рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ OpenCV рдлреЛрдЯреЛ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдзреВрдк рдХрд╛ рдЪрд╢реНрдорд╛ рдХрдо рдХрд░рддрд╛ рд╣реИрдЙрддреНрддрд░: рдореИрдВ рдЗрд╕ рдЬрд╡рд╛рдм рдХреЛ рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛ - рдЗрд╕рдХреЗ рд╕рд╛рде рд░рдЦреЛредрдЕрдВрдд рдореЗрдВ, рд╣рдо рдПрдХ рдЕрдЪреНрдЫреЗ рдореЗрдо рдХреЗ рд╕рд╛рде рдЖрдЬ рдХреЗ рдЧрд╛рдЗрдб рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВредрд▓рдЧрднрдЧ рдЫрд╣ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдореЗрд░реЗ рдкрд┐рддрд╛ рдФрд░ рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдмреАрдЧрд▓, рдЬреЗрдореНрдорд╛ рдХреЛ рдЕрдкрдирд╛рдпрд╛редрдпрд╣рд╛рдБ рдЖрдк рдореЗрд░реЗ рдХрдВрдзреЗ рдкрд░ рдЧреЗрдорд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: $ python create_gif.py --config config.json --image images/pupper.jpg \ --output pupper_out.gif [INFO] loading models... [INFO] computing object detections... [INFO] creating GIF... [INFO] cleaning up...
рдЕрдВрдЬреАрд░ред 13. рдЧреЗрдорд╛ рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдХреЛ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛? рдлрд┐рд░ "рдЗрд╕рдХреЗ рд╕рд╛рде рд╢рд░реНрддреЛрдВ рдкрд░ рдЖрдПрдВ!"рд╕рд╣рдордд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╣ рдкреНрдпрд╛рд░рд╛ рд╣реИ? рдЗрд╕рд╕реЗ рдирд┐рдкрдЯреЛредрдПрдХ рдЧреБрдг рддреНрд░реБрдЯрд┐ рд╣реИ?
рдЪрд┐рдВрддрд╛ рдордд рдХрд░реЛ!рдпрджрд┐ рдЖрдкрдиреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рджреЗрдЦреА рд╣реИ: $ python create_gif.py --config config.json --image images/adrian.jpg \ --output adrian_out.gif ... Traceback (most recent call last): File "create_gif.py", line 142, in <module> (lStart, lEnd) = face_utils.FACIAL_LANDMARKS_IDXS["left_eye"] AttributeError: module 'imutils.face_utils' has no attribute 'FACIAL_LANDMARKS_IDXS'
... рддреЛ рдЖрдкрдХреЛ рдмрд╕ imutils рдкреИрдХреЗрдЬ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛: $ pip install --upgrade imutils Collecting imutils ... Successfully installed imutils-0.5.1
рдХреНрдпреЛрдВ?рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ imutils.face_utils
dlib (рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ) рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдорд┐рдд 68-рдмрд┐рдВрджреБ рд▓реИрдВрдбрдорд╛рд░реНрдХ рдбрд┐рдЯреЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдирд╣реАрдВ рд╣реИ рдПрдХ рддреНрд╡рд░рд┐рдд 5 рдЕрдВрдХреЛрдВ рдбрд┐рдЯреЗрдХреНрдЯрд░ , рдЬреЛ рдЕрдм рднреА imutils рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рджреЛрдиреЛрдВ рдбрд┐рдЯреЗрдХреНрдЯрд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП imutils рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ (рддрд╛рдХрд┐ рдЖрдкрдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗ)редрд╕рд╛рд░рд╛рдВрд╢
рдЖрдЬ рдХреЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рдЖрдкрдиреЗ OpenCV рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ GIF рдмрдирд╛рдирд╛ рд╕реАрдЦрд╛редрдкрд╛рда рдХреЛ рдордЬреЗрджрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдореЗрдо (рдФрд░ рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛) GIF рдПрдиреАрдореЗрд╢рди "рдбреАрд▓ рд╡рд┐рде рдЗрдЯ" рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП OpenCV рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреЛ рд▓рдЧрднрдЧ рд╣рд░ рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд░реВрдк рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдордиреЗ рдХрдИ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрд╝рди рдФрд░ рдЧрд╣рд░реА рд╢рд┐рдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:- рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди
- рдЪреЗрд╣рд░реЗ рдкрд░ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди
- рдЪреЗрд╣рд░реЗ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдкрд╣рдЪрд╛рди (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдВрдЦ)
- рдЪреЗрд╣рд░реЗ рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдВрдЦреЛрдВ рдХреЗ рдмреАрдЪ рдХреЗ рдХреЛрдг рдХреА рдЧрдгрдирд╛
- рдЕрд▓реНрдлрд╛ рд╕рдореНрдорд┐рд╢реНрд░рдг рдХреЗ рд╕рд╛рде рдкрд╛рд░рджрд░реНрд╢реА рдорд┐рд╢реНрд░рдг рдмрдирд╛рдПрдВ
рдЕрдВрдд рдореЗрдВ, рд╣рдордиреЗ рдЙрддреНрдкрдиреНрди рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд▓рд┐рдпрд╛ рдФрд░ OpenCV рдФрд░ ImageMagick рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдПрдирд┐рдореЗрдЯреЗрдб GIF рдмрдирд╛рдпрд╛редрдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЖрдЬ рдХрд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ рд╣реЛрдЧрд╛!рдЕрдЧрд░ рдЖрдкрдХреЛ рдпрд╣ рдкрд╕рдВрдж рдЖрдпрд╛, рддреЛ рдХреГрдкрдпрд╛ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЫреЛрдбрд╝реЗрдВ рдФрд░ рдореБрдЭреЗ рдмрддрд╛рдПрдВредрдареАрдХ рд╣реИ, рдЕрдЧрд░ рдЖрдк рдЗрд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдЗрд╕рдХреЗ рд╕рд╛рде рд░рдЦреЛред ;)