рдореБрдЦреНрдп рд╕рд╛рдордЧреНрд░реА рдкрд░ рдЬрд╛рдПрдБ

OpenCV рдХреЗ рд╕рд╛рде Python рдореЗрдВ рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди

Python рдореЗрдВ OpenCV рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдбрд┐рдЯреЗрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗрдВ рдФрд░ рдЗрд╕реЗ рдлреЗрд╕рд┐рдпрд▓ рдбрд┐рдЯреЗрдХреНрд╢рди рдЬреИрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдЦреЛрдЬреЗрдВред
┬╖ 8 рдорд┐ре░ рдкрдврд╝реЗрдВ

AI рдХреЗ рд╕рд╛рде рдЦреЛрдЬреЗрдВ

OpenCV рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрд╝рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬреЛ Python, C++, рдФрд░ Java рдЬреИрд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред рдпрд╣ рдкреИрдХреЗрдЬ рдореВрд▓ рд░реВрдк рд╕реЗ 1999 рдореЗрдВ Intel рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдмрд╛рдж рдореЗрдВ рдУрдкрди-рд╕реЛрд░реНрд╕ рдХрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ред

OpenCV рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдЧреИрд░-рдЧрдгрд┐рддрдЬреНрдЮреЛрдВ рдХреЛ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрд╝рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдЙрдиреНрд╣реЗрдВ рд╢реВрдиреНрдп рд╕реЗ рдХреЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ 2,500 рд╕реЗ рдЕрдзрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдлреЗрд╕ рд░рд┐рдХрдЧреНрдирд┐рд╢рди рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдбрд┐рдЯреЗрдХреНрд╢рди рдЬреИрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред

Google, Microsoft, IBM, рдФрд░ Intel рдЬреИрд╕реА рдкреНрд░рддрд┐рд╖реНрдард┐рдд рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░реИрдХреНрдЯрд┐рд╢рдирд░реНрд╕ OpenCV рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд╡реНрдпрд╛рдкрдХ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдирд┐рдГрд╢реБрд▓реНрдХ рд╣реИред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо Python рдореЗрдВ рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП OpenCV рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдЕрдВрдд рддрдХ, рдЖрдк рдпрд╣ рдЬрд╛рди рдЬрд╛рдПрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ:

  • Python рдореЗрдВ OpenCV рдХреЗ рд╕рд╛рде рдЗрдореЗрдЬ рдореЗрдВ рдорд╛рдирд╡ рдЪреЗрд╣рд░реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ
  • рд╡реЗрдмрдХреИрдо рд╕реЗ рд▓рд╛рдЗрд╡ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд░рд┐рдпрд▓-рдЯрд╛рдЗрдо рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдХрд░реЗрдВ

рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдХреНрдпрд╛ рд╣реИ?

рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдореЗрдВ рдХрд┐рд╕реА рдЗрдореЗрдЬ рдпрд╛ рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЪреЗрд╣рд░реЗ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рджреГрд╢реНрдп рдЗрдирдкреБрдЯ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдХреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреА рдЪреЗрд╣рд░реЗ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдореМрдЬреВрдж рд╣реИрдВред

рдЪреВрдВрдХрд┐ рдорд╛рдирд╡ рдЪреЗрд╣рд░реЗ рдмрд╣реБрдд рд╡рд┐рд╡рд┐рдз рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдореЙрдбрд▓ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреГрд╖реНрдарднреВрдорд┐, рдЬреЗрдВрдбрд░ рдФрд░ рд╕рдВрд╕реНрдХреГрддрд┐рдпреЛрдВ рдХреЗ рд▓реЛрдЧреЛрдВ рдХрд╛ рдкрд░реНрдпрд╛рдкреНрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕рд╣реА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпрд╛рдБ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░реЛрд╢рдиреА, рдХреЛрдгреЛрдВ рдФрд░ рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рд╡рд╛рд▓реЗ рдХрдИ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реИрдВрдкрд▓ рднреА рджрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдПред

рдпреЗ рдмрд╛рд░реАрдХрд┐рдпрд╛рдБ рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдХреЛ рдПрдХ рдЬрдЯрд┐рд▓, рд╕рдордп-рд╕рд╛рдзреНрдп рдХрд╛рд░реНрдп рдмрдирд╛рддреА рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдореЙрдбрд▓ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рдШрдВрдЯреЛрдВ рдФрд░ рд▓рд╛рдЦреЛрдВ рдбреЗрдЯрд╛ рд╕реИрдВрдкрд▓ рд▓рдЧрддреЗ рд╣реИрдВред

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, OpenCV рдкреИрдХреЗрдЬ рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░реА-рдЯреНрд░реЗрдВрдб рдореЙрдбрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреГрд╢реНрдп рдбреЗрдЯрд╛ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Haar рдХреИрд╕реНрдХреЗрдб рдирд╛рдордХ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред

рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП OpenCV рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓

рдЗрд╕ рдЦрдВрдб рдореЗрдВ, рд╣рдо OpenCV рдФрд░ Python рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП Haar Cascade рдирд╛рдордХ рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕реАрдЦреЗрдВрдЧреЗред

рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдХреЛрдб рдСрдирд▓рд╛рдЗрди рдЪрд▓рд╛рдПрдВ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ

рдХреЛрдб рдЪрд▓рд╛рдПрдВ

Haar рдХреИрд╕реНрдХреЗрдб рдХреНрд▓рд╛рд╕рд┐рдлрд╝рд╛рдпрд░реНрд╕ рдХрд╛ рдкрд░рд┐рдЪрдп

рдпрд╣ рд╡рд┐рдзрд┐ рдкрд╣рд▓реА рдмрд╛рд░ Paul Viola рдФрд░ Michael Jones рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдкреЗрдкрд░ Rapid Object Detection Using a Boosted Cascade of Simple Features рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЧрдИ рдереАред

рдЗрд╕ рддрдХрдиреАрдХ рдХреЗ рдкреАрдЫреЗ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЗрдореЗрдЬ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлреАрдЪрд░реНрд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рд╕рд┐рдлрд╝рд╛рдпрд░реНрд╕ рдХреА рдПрдХ рдХреИрд╕реНрдХреЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрди рдХреНрд▓рд╛рд╕рд┐рдлрд╝рд╛рдпрд░реНрд╕ рдХреЛ рдорд┐рд▓рд╛рдХрд░ рдПрдХ рдордЬрдмреВрдд рдХреНрд▓рд╛рд╕рд┐рдлрд╝рд╛рдпрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдорд╛рдирд╡ рдЪреЗрд╣рд░рд╛ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╕реИрдВрдкрд▓реНрд╕ рдФрд░ рдмрд┐рдирд╛ рдЪреЗрд╣рд░реЗ рд╡рд╛рд▓реЗ рд╕реИрдВрдкрд▓реНрд╕ рдХреЗ рдмреАрдЪ рд╕рдЯреАрдХ рдЕрдВрддрд░ рдХрд░ рд╕рдХреЗред

OpenCV рдореЗрдВ рдмрд┐рд▓реНрдЯ-рдЗрди Haar рдХреИрд╕реНрдХреЗрдб рдХреНрд▓рд╛рд╕рд┐рдлрд╝рд╛рдпрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рдирд╡ рдЪреЗрд╣рд░реЛрдВ рдХреЗ рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдореЗрдВ рдмрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдХреНрд▓рд╛рд╕рд┐рдлрд╝рд╛рдпрд░ рд▓реЛрдб рдХрд░рдирд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЗрдирдкреБрдЯ рдЗрдореЗрдЬ рдкрд░ рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред

Python рдХреЗ рд▓рд┐рдП OpenCV рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛

OpenCV рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рдХрдорд╛рдВрдб рдкреНрд░реЙрдореНрдкреНрдЯ рдпрд╛ рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВ:

pip install opencv-python

рдпрд╣ рдХрдорд╛рдВрдб рддрднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм рдЖрдкрдХреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ pip рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛред рдпрджрд┐ рдЖрдк pip рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░рд╛ PIP Python Tutorial рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрдореЗрдЬ рдореЗрдВ рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП OpenCV

рд╣рдо Unsplash рд╕реЗ рдПрдХ рдлреЛрдЯреЛ рдореЗрдВ рдорд╛рдирд╡ рдЪреЗрд╣рд░реЗ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рдЯреЗрдХреНрдЯрд░ рдмрдирд╛рдПрдВрдЧреЗред рдХреЛрдб рдХреЗ рд╕рд╛рде рдЪрд▓рддреЗ рд╕рдордп рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рддрд╕реНрд╡реАрд░ рдХреЛ рдЕрдкрдиреА рд╡рд░реНрдХрд┐рдВрдЧ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╕реЗрд╡ рдХрд░реЗрдВ рдФрд░ рдЙрд╕рдХрд╛ рдирд╛рдо input_image рдХрд░ рджреЗрдВред

рдЪрд░рдг 1: OpenCV рдкреИрдХреЗрдЬ рдЗрдореНрдкреЛрд░реНрдЯ рдХрд░реЗрдВ

рдЕрдм, OpenCV рдЗрдореНрдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЗрдирдкреБрдЯ рдЗрдореЗрдЬ рдкрд╛рде рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ:

import cv2

imagePath = 'input_image.jpg'

рдЪрд░рдг 2: рдЗрдореЗрдЬ рдкрдврд╝реЗрдВ

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ OpenCV рдХреА imread() рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдЗрдореЗрдЬ рдкрдврд╝рдиреА рд╣реЛрдЧреА:

img = cv2.imread(imagePath)

рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдкрд╛рде рд╕реЗ рдЗрдореЗрдЬ рд▓реЛрдб рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрд╕реЗ Numpy array рдХреЗ рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛рдПрдЧрд╛ред┬а

рдЖрдЗрдП рдЗрд╕ array рдХреЗ рдЖрдпрд╛рдо рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ:

img.shape
(4000, 2667, 3)

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдПрдХ 3-рдЖрдпрд╛рдореА array рд╣реИред array рдХреЗ рдорд╛рди рдХреНрд░рдорд╢рдГ рдЪрд┐рддреНрд░ рдХреА рдКрдБрдЪрд╛рдИ, рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдЪреИрдирд▓реНрд╕ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдпрд╣ рдПрдХ рд░рдВрдЧреАрди рдЗрдореЗрдЬ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рджрд░реНрд╢рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рдЪреИрдирд▓реНрд╕ рдкреНрд░рдпреЛрдЧ рд╣реЛрддреЗ рд╣реИрдВ - рдмреНрд▓реВ, рдЧреНрд░реАрди рдФрд░ рд░реЗрдб (BGR)ред┬а

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЬрд╣рд╛рдБ рдЗрдореЗрдЬ рдХрд╛ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдЕрдиреБрдХреНрд░рдо RGB (Red, Green, Blue) рд╣реЛрддрд╛ рд╣реИ, рд╡рд╣реАрдВ OpenCV рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЙрд▓реНрдЯрд╛ рд▓реЗрдЖрдЙрдЯ (Blue, Green, Red) рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред

рдЪрд░рдг 3: рдЗрдореЗрдЬ рдХреЛ рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдореЗрдВ рдмрджрд▓реЗрдВ

рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдХреНрд╖рдорддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рдЗрдореЗрдЬ рдХреЛ рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛:

gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

рдЕрдм рдЗрд╕ рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдЗрдореЗрдЬ рдХреЗ рдЖрдпрд╛рдо рджреЗрдЦрддреЗ рд╣реИрдВ:

gray_image.shape
(4000, 2667)

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ array рдХреЗрд╡рд▓ рджреЛ рдорд╛рди рд░рдЦрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрдореЗрдЬ рдЕрдм рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рд╣реИ рдФрд░ рддреАрд╕рд░рд╛ рдХрд▓рд░ рдЪреИрдирд▓ рдирд╣реАрдВ рд╣реИред

рдЪрд░рдг 4: рдХреНрд▓рд╛рд╕рд┐рдлрд╝рд╛рдпрд░ рд▓реЛрдб рдХрд░реЗрдВ

рдЖрдЗрдП OpenCV рдореЗрдВ рдмрд┐рд▓реНрдЯ-рдЗрди рдкреНрд░реА-рдЯреНрд░реЗрдВрдб Haar рдХреИрд╕реНрдХреЗрдб рдХреНрд▓рд╛рд╕рд┐рдлрд╝рд╛рдпрд░ рд▓реЛрдб рдХрд░реЗрдВ:

face_classifier = cv2.CascadeClassifier(
    cv2.data.haarcascades + "haarcascade_frontalface_default.xml"
)

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо haarcascade_frontalface_default.xml рдирд╛рдордХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдХреНрд▓рд╛рд╕рд┐рдлрд╝рд╛рдпрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдлреНрд░рдВрдЯрд▓ рдлреЗрд╕реЗрдЬрд╝ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред┬а

OpenCV рдЗрдореЗрдЬ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдкреНрд░реА-рдЯреНрд░реЗрдВрдб рдореЙрдбрд▓ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ - рдЬреИрд╕реЗ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреА рдЖрдБрдЦреЗрдВ, рдореБрд╕реНрдХрд╛рди, рдКрдкрд░реА рд╢рд░реАрд░, рдпрд╣рд╛рдБ рддрдХ рдХрд┐ рд╡рд╛рд╣рди рдХреА рдирдВрдмрд░ рдкреНрд▓реЗрдЯред рдЖрдк OpenCV рдореЗрдВ рдмрд┐рд▓реНрдЯ-рдЗрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреНрд▓рд╛рд╕рд┐рдлрд╝рд╛рдпрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ GitHub рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВред

рдЪрд░рдг 5: рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдХрд░реЗрдВ

рдЕрдм рд╣рдо рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдЗрдореЗрдЬ рдкрд░ рдЕрднреА рд▓реЛрдб рдХрд┐рдП рдЧрдП рдХреНрд▓рд╛рд╕рд┐рдлрд╝рд╛рдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

face = face_classifier.detectMultiScale(
    gray_image, scaleFactor=1.1, minNeighbors=5, minSize=(40, 40)
)

рдЖрдЗрдП рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдореЗрдердбреНрд╕ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдХреЛ рд╕рдордЭреЗрдВ:

  1. detectMultiScale():

detectMultiScale() рдореЗрдердб рдЗрдирдкреБрдЯ рдЗрдореЗрдЬ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрдХрд╛рд░ рдХреЗ рдЪреЗрд╣рд░реЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред

  1. grey_image:

рдЗрд╕ рдореЗрдердб рдХрд╛ рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ grey_image рд╣реИ, рдЬреЛ рд╡рд╣ рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдЗрдореЗрдЬ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдерд╛ред

  1. scaleFactor:

рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдЗрдирдкреБрдЯ рдЗрдореЗрдЬ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╕реНрдХреЗрд▓-рдбрд╛рдЙрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд▓рд┐рдП рдмрдбрд╝реЗ рдЪреЗрд╣рд░реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХреЗред рдпрд╣рд╛рдБ рд╣рдордиреЗ 1.1 рдХрд╛ рд╕реНрдХреЗрд▓ рдлрд╝реИрдХреНрдЯрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрдореЗрдЬ рдХрд╛ рдЖрдХрд╛рд░ 10% рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

  1. minNeighbors:

рдХреИрд╕реНрдХреЗрдб рдХреНрд▓рд╛рд╕рд┐рдлрд╝рд╛рдпрд░ рдЗрдореЗрдЬ рдореЗрдВ рдЪреЗрд╣рд░реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдкрд░ рдПрдХ рд╕реНрд▓рд╛рдЗрдбрд┐рдВрдЧ рд╡рд┐рдВрдбреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрди рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЛ рдЖрдпрддреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВред┬а

рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдХреНрд▓рд╛рд╕рд┐рдлрд╝рд╛рдпрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдлрд╝реЙрд▓реНрд╕ рдкреЙрдЬрд╝рд┐рдЯрд┐рд╡реНрд╕ рдХреИрдкреНрдЪрд░ рдХрд░реЗрдЧрд╛ред рдЗрдиреНрд╣реЗрдВ minNeighbors рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╡реИрдз рдбрд┐рдЯреЗрдХреНрд╢рди рдорд╛рдирд╛ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреА рдЖрд╕-рдкрд╛рд╕ рдХреА рд╡рд┐рдВрдбреЛрдЬрд╝ (рдиреЗрдмрд░реНрд╕) рдХрд╛ рдорд┐рд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рд╕рд╛рд░рд╛рдВрд╢рддрдГ, рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ 0 рдпрд╛ 1 рдЬреИрд╕рд╛ рдЫреЛрдЯрд╛ рдорд╛рди рджреЗрдиреЗ рдкрд░ рдлрд╝реЙрд▓реНрд╕ рдкреЙрдЬрд╝рд┐рдЯрд┐рд╡реНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрдзрд┐рдХ рд╣реЛрдЧреА, рдЬрдмрдХрд┐ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдорд╛рди рджреЗрдиреЗ рдкрд░ рдХрдИ рдЯреНрд░реВ рдкреЙрдЬрд╝рд┐рдЯрд┐рд╡реНрд╕ рдЫреВрдЯ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣рд╛рдБ рддрд░рдХреАрдм рдпрд╣ рд╣реИ рдХрд┐ рдРрд╕рд╛ рд╕рдВрддреБрд▓рди рдЦреЛрдЬреЗрдВ рдЬреЛ рдлрд╝реЙрд▓реНрд╕ рдкреЙрдЬрд╝рд┐рдЯрд┐рд╡реНрд╕ рдХреЛ рдХрдо рдХрд░реЗ рдФрд░ рд╕рд╛рде рд╣реА рдЯреНрд░реВ рдкреЙрдЬрд╝рд┐рдЯрд┐рд╡реНрд╕ рдХреА рд╕рдЯреАрдХ рдкрд╣рдЪрд╛рди рднреА рдХрд░ рд╕рдХреЗред

  1. minSize:

рдЕрдВрдд рдореЗрдВ, minSize рдкреИрд░рд╛рдореАрдЯрд░ рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдиреНрдпреВрдирддрдо рдЖрдХрд╛рд░ рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИред рдореЙрдбрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдиреНрдпреВрдирддрдо рдЖрдХрд╛рд░ рд╕реЗ рдЫреЛрдЯреЗ рдЪреЗрд╣рд░реЛрдВ рдХреЛ рдирдЬрд╝рд░рдЕрдВрджрд╛рдЬрд╝ рдХрд░ рджреЗрдЧрд╛ред

рдЪрд░рдг 6: рдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдмрдирд╛рдирд╛

рдЕрдм рдЬрдм рдореЙрдбрд▓ рдиреЗ рдЗрдореЗрдЬ рдХреЗ рдЕрдВрджрд░ рдЪреЗрд╣рд░реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рдЗрди рдЪреЗрд╣рд░реЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдХреЛрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ:

for (x, y, w, h) in face:
    cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 4)

face рд╡реЗрд░рд┐рдПрдмрд▓ рдЪрд╛рд░ рдорд╛рдиреЛрдВ рд╡рд╛рд▓рд╛ рдПрдХ array рд╣реИ: рдЬрд┐рди рдЕрдХреНрд╖реЛрдВ (x рдФрд░ y) рдкрд░ рдЪреЗрд╣рд░реЗ рдкрд╛рдП рдЧрдП, рдФрд░ рдЙрдирдХреА рдЪреМрдбрд╝рд╛рдИ рддрдерд╛ рдКрдБрдЪрд╛рдИред рдКрдкрд░ рдХрд╛ рдХреЛрдб рдкрд╣рдЪрд╛рдиреЗ рдЧрдП рдЪреЗрд╣рд░реЛрдВ рдкрд░ рдЗрдЯрд░рд░реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрди рдорд╛рдкреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдмрдирд╛рддрд╛ рд╣реИред

0,255,0 рдкреИрд░рд╛рдореАрдЯрд░ рдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдХрд╛ рд░рдВрдЧ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдЬреЛ рд╣рд░рд╛ рд╣реИ, рдФрд░ 4 рдЙрд╕рдХреА рдореЛрдЯрд╛рдИ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

рдЪрд░рдг 7: рдЗрдореЗрдЬ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛

рдбрд┐рдЯреЗрдХреНрдЯ рдХрд┐рдП рдЧрдП рдЪреЗрд╣рд░реЛрдВ рд╡рд╛рд▓реА рдЗрдореЗрдЬ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдЗрдореЗрдЬ рдХреЛ BGR рдлреЙрд░реНрдореИрдЯ рд╕реЗ RGB рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛:

img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

рдЕрдм, рдЗрдореЗрдЬ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Matplotlib рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

import matplotlib.pyplot as plt



plt.figure(figsize=(20,10))
plt.imshow(img_rgb)
plt.axis('off')

рдКрдкрд░ рдХрд╛ рдХреЛрдб рдирд┐рдореНрди рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:┬а

рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдкрд░рд┐рдгрд╛рдо

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛!

рдореЙрдбрд▓ рдиреЗ рдЗрд╕ рдЗрдореЗрдЬ рдореЗрдВ рдорд╛рдирд╡ рдЪреЗрд╣рд░реЗ рдХрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдмрдирд╛рдпрд╛ рд╣реИред┬а

OpenCV рдХреЗ рд╕рд╛рде рд░рд┐рдпрд▓-рдЯрд╛рдЗрдо рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди

рдЕрдм рдЬрдм рд╣рдордиреЗ OpenCV рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдерд┐рд░ рдЗрдореЗрдЬ рдкрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд▓рд╛рдЗрд╡ рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдкрд░ рдпрд╣реА рдХрд╛рдо рдХреИрд╕реЗ рдХрд░реЗрдВред┬а

рдЪрд░рдг 1: рдкреВрд░реНрд╡-рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкрд┐рдЫрд▓реЗ рдЦрдВрдб рдХреА рддрд░рд╣ OpenCV рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЗрдореНрдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ Haar рдХреИрд╕реНрдХреЗрдб рдореЙрдбрд▓ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдпрд╣ рдмреНрд▓реЙрдХ рдЪрд▓рд╛ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

import cv2

face_classifier = cv2.CascadeClassifier(
    cv2.data.haarcascades + "haarcascade_frontalface_default.xml"
)

рдЪрд░рдг 2: рд╡реЗрдмрдХреИрдо рдПрдХреНрд╕реЗрд╕ рдХрд░реЗрдВ

рдЕрдм рд╣рдореЗрдВ рдЕрдкрдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдХреИрдорд░реЗ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рд╡реАрдбрд┐рдпреЛ рдбреЗрдЯрд╛ рдХреА рд▓рд╛рдЗрд╡ рд╕реНрдЯреНрд░реАрдо рдкрдврд╝реА рдЬрд╛ рд╕рдХреЗред рдпрд╣ рдирд┐рдореНрди рдХреЛрдб рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

video_capture = cv2.VideoCapture(0)

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдордиреЗ VideoCapture() рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ 0 рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ OpenCV рдХреЛ рд╣рдорд╛рд░реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреИрдорд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрддрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдХрдИ рдХреИрдорд░реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рдорд╛рди рдХреЛ рдЙрдкрдпреБрдХреНрдд рд░реВрдк рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдЪрд░рдг 3: рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЪреЗрд╣рд░реЛрдВ рдХреА рдкрд╣рдЪрд╛рди

рдЕрдм, рдЪрд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЪреЗрд╣рд░реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдХрд░ рдЙрдирдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдмрдирд╛рдП:

def detect_bounding_box(vid):
    gray_image = cv2.cvtColor(vid, cv2.COLOR_BGR2GRAY)
    faces = face_classifier.detectMultiScale(gray_image, 1.1, 5, minSize=(40, 40))
    for (x, y, w, h) in faces:
        cv2.rectangle(vid, (x, y), (x + w, y + h), (0, 255, 0), 4)
    return faces

detect_bounding_box рдлрд╝рдВрдХреНрд╢рди рд╡реАрдбрд┐рдпреЛ рдлреНрд░реЗрдо рдХреЛ рдЗрдирдкреБрдЯ рд▓реЗрддрд╛ рд╣реИред

рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдлреНрд░реЗрдо рдХреЛ рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдЬреИрд╕реЗ рд╣реА рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдлрд┐рд░, рд╣рдо scaleFactor, minNeighbors, рдФрд░ minSize рдХреЗ рдкрд╣рд▓реЗ рдЬреИрд╕реЗ рд╣реА рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдЗрдореЗрдЬ рдореЗрдВ рдЪреЗрд╣рд░реЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд░рд╣реЗ рд╣реИрдВред

рдЕрдВрдд рдореЗрдВ, рд╣рдо рдлреНрд░реЗрдо рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдореЛрдЯрд╛рдИ 4 рдХрд╛ рд╣рд░рд╛ рдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдмрдирд╛рддреЗ рд╣реИрдВред

рдЪрд░рдг 4: рд░рд┐рдпрд▓-рдЯрд╛рдЗрдо рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд▓реВрдк рдмрдирд╛рдирд╛

рдЕрдм, рд╣рдореЗрдВ рдПрдХ рдЕрдирд┐рд╢реНрдЪрд┐рдд while рд▓реВрдк рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рд╣рдорд╛рд░реЗ рд╡реЗрдмрдХреИрдо рд╕реЗ рд╡реАрдбрд┐рдпреЛ рдлреНрд░реЗрдо рдХреИрдкреНрдЪрд░ рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрд╕ рдкрд░ рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдлрд╝рдВрдХреНрд╢рди рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛:

while True:

    result, video_frame = video_capture.read()  # read frames from the video
    if result is False:
        break  # terminate the loop if the frame is not read successfully

    faces = detect_bounding_box(
        video_frame
    )  # apply the function we created to the video frame

    cv2.imshow(
        "My Face Detection Project", video_frame
    )  # display the processed frame in a window named "My Face Detection Project"

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

video_capture.release()
cv2.destroyAllWindows()

рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд╕реНрдХреНрд░реАрди рдкрд░ My Face Detection Project рдирд╛рдордХ рдПрдХ рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдИ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП:

рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдкрд░рд┐рдгрд╛рдо

рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдЖрдкрдХреЗ рдЪреЗрд╣рд░реЗ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдлреНрд░реЗрдо рдореЗрдВ рдЖрдкрдХреА рд╕реНрдерд┐рддрд┐ рдЪрд╛рд╣реЗ рдЬреЛ рднреА рд╣реЛ, рдЙрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд╣рд░рд╛ рдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдКрдкрд░ рдХреЗ рдлреНрд░реЗрдо рдореЗрдВ, рдореЙрдбрд▓ рдореЗрд░рд╛ рдЪреЗрд╣рд░рд╛ рдФрд░ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрдХрдбрд╝рдХрд░ рд░рдЦреЗ рдЧрдП рдбреНрд░рд╛рдЗрд╡рд┐рдВрдЧ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкрд░ рдореЗрд░реА рддрд╕реНрд╡реАрд░ рдХреЛ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИред

рдЖрдк рдЗрд╕ рдореЙрдбрд▓ рдХреА рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрдИ рддрд╕реНрд╡реАрд░реЗрдВ рдкрдХрдбрд╝рдХрд░ рдпрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЛрдЧреЛрдВ рдХреЛ рдХреИрдорд░реЗ рдХреЗ рдкреАрдЫреЗ рд╡рд┐рднрд┐рдиреНрди рдХреЛрдгреЛрдВ рдкрд░ рдЦрдбрд╝рд╛ рдХрд░рдХреЗ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореЙрдбрд▓ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдпрд╛ рд▓рд╛рдЗрдЯрд┐рдВрдЧ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╕рднреА рдорд╛рдирд╡ рдЪреЗрд╣рд░реЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреАрдмреЛрд░реНрдб рдкрд░ тАЬqтАЭ рдХреБрдВрдЬреА рджрдмрд╛рдХрд░ рд▓реВрдк рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдирд┐рд╖реНрдХрд░реНрд╖

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, OpenCV рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрд╝рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рдмрд╣реБрдореБрдЦреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ, рдЬреЛ рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдЬреИрд╕реЗ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реА-рдЯреНрд░реЗрдВрдб рдореЙрдбрд▓реНрд╕ рдФрд░ рдЯреВрд▓реНрд╕ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред

рдЪрд╛рд╣реЗ рдЖрдк рд╕реНрдерд┐рд░ рдЗрдореЗрдЬ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░ рд░рд╣реЗ рд╣реЛрдВ рдпрд╛ рд▓рд╛рдЗрд╡ рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо, OpenCV рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдХреБрд╢рд▓ рдФрд░ рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рд╕реБрдЧрдо рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рджреЗрддрд╛ рд╣реИред

рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдХрд╡рд░ рдХреА рдЧрдИ рддрдХрдиреАрдХреЛрдВ рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░рдХреЗ, рдЖрдк рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрд╝рди рдХреЗ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдЕрдиреНрд╡реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рддреИрдпрд╛рд░ рд╣реЛрдВрдЧреЗред

Natassha Selvaraj

рд▓реЗрдЦрдХ

Natassha Selvaraj

рдирддрд╛рд╢рд╛┬ардПрдХ рдбреЗрдЯрд╛ рдХрдВрд╕рд▓реНрдЯреЗрдВрдЯ рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛ рд╕рд╛рдЗрдВрд╕ рдФрд░ рдорд╛рд░реНрдХреЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рдВрдЧрдо рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред рдЙрдирдХрд╛ рдорд╛рдирдирд╛ рд╣реИ рдХрд┐ рд╕рдордЭрджрд╛рд░реА рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛ рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдФрд░ рд╕рдВрдЧрдардиреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдзрд╛рд░рдг рд╡рд┐рдХрд╛рд╕ рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╕реНрд╡-рдЕрдзреНрдпрдпрдирд┐рдд рдбреЗрдЯрд╛ рдкреНрд░реЛрдлреЗрд╢рдирд▓ рдХреЗ рд░реВрдк рдореЗрдВ,┬ардирддрд╛рд╢рд╛┬ардРрд╕реЗ рд▓реЗрдЦ рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддреА рд╣реИрдВ рдЬреЛ рдЕрдиреНрдп рдбреЗрдЯрд╛ рд╕рд╛рдЗрдВрд╕ рдЕрднреНрдпрд░реНрдерд┐рдпреЛрдВ рдХреЛ рдЗрд╕ рдЙрджреНрдпреЛрдЧ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВред рдЙрдирдХреЗ рдирд┐рдЬреА рдмреНрд▓реЙрдЧ рдФрд░ рдмрд╛рд╣рд░реА рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рд▓реЗрдЦ рдФрд╕рддрди 200 рд╣рдЬрд╛рд░ рдорд╛рд╕рд┐рдХ рджреГрд╢реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред

FAQs

рдХреНрдпрд╛ рдЪреЗрд╣рд░реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП OpenCV рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рд╣рд╛рдБ, OpenCV рдЕрдкрдиреЗ рдкреНрд░реА-рдЯреНрд░реЗрдВрдб Haar рдХреИрд╕реНрдХреЗрдб рдХреНрд▓рд╛рд╕рд┐рдлрд╝рд╛рдпрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдБрдЦреЗрдВ, рдореБрд╕реНрдХрд╛рди, рд╡рд╛рд╣рди рдФрд░ рдпрд╣рд╛рдБ рддрдХ рдХрд┐ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд▓реЗрдЯ рдЬреИрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдЖрдЗрдЯрдореНрд╕ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдбрд┐рдЯреЗрдХреНрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ, рдЕрдзрд┐рдХ рдордЬрд╝рдмреВрдд рдФрд░ рд╕рдЯреАрдХ рдорд▓реНрдЯреА-рдСрдмреНрдЬреЗрдХреНрдЯ рдбрд┐рдЯреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП OpenCV рдХреЛ YOLO рдпрд╛ SSD рдЬреИрд╕реЗ рдЖрдзреБрдирд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдбрд┐рдЯреЗрдХреНрд╢рди рдореЙрдбрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

OpenCV рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╣реА рдЗрдореЗрдЬ рдореЗрдВ рдХрдИ рдЪреЗрд╣рд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓реЗрдВ?

OpenCV рдХреА detectMultiScale() рдореЗрдердб рдкреНрд░рддреНрдпреЗрдХ рдЪреЗрд╣рд░реЗ рдХреЗ рд▓рд┐рдП рдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдмрдирд╛рдХрд░ рдЗрдореЗрдЬ рдореЗрдВ рд╕рднреА рдЪреЗрд╣рд░реЛрдВ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛ рд▓реЗрддреА рд╣реИред рдЖрдк рд▓реМрдЯрд╛рдП рдЧрдП рдмреЙрдиреНрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕реЗрдЬрд╝ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдЯрд░рд░реЗрдЯ рдХрд░рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдбрд┐рдЯреЗрдХреНрдЯ рдХрд┐рдП рдЧрдП рдЪреЗрд╣рд░реЗ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░реЛрд╕реЗрд╕ рдпрд╛ рд▓реЗрдмрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг:

for (x, y, w, h) in faces:
    cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 4)  # Draw boxes for all detected faces
рдХреНрдпрд╛ рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП OpenCV рдбреАрдк рд▓рд░реНрдирд┐рдВрдЧ рдореЙрдбрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рд╣рд╛рдБ, рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП OpenCV рдбреАрдк рд▓рд░реНрдирд┐рдВрдЧ рдореЙрдбрд▓реЛрдВ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ Caffe рдпрд╛ TensorFlow рдЬреИрд╕реЗ рдкреНрд░реА-рдЯреНрд░реЗрдВрдб DNN рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред OpenCV рдХрд╛ cv2.dnn рдореЙрдбреНрдпреВрд▓ Haar рдХреИрд╕реНрдХреЗрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдФрд░ рд╕рдЯреАрдХ рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЗрди рдореЙрдбрд▓реЛрдВ рдХреЗ рдПрдХреАрдХрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд░рд┐рдпрд▓-рдЯрд╛рдЗрдо рдлреЗрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП MobileNet-SSD рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

net = cv2.dnn.readNetFromCaffe('deploy.prototxt', 'res10_300x300_ssd_iter_140000.caffemodel')

рд╡рд┐рд╖рдп