рдорд╛рдБ рд░рд╛рдд рдореЗрдВ рд╢рд╛рдВрддрд┐ рд╕реЗ рд╕реЛрддреА рд╣реИ - рд╣рдо рд░рд╛рд╕реНрдкрдмрд┐рдпрди рдХреЗ рд▓рд┐рдП рдУрдкрдирд╕реАрд╡реА рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ

рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╣рдлрд╝реНрддреЗ рд╣рдорд╛рд░реА рдЯреАрдо рдХреЗ рд▓рд┐рдП рдореБрд╢реНрдХрд┐рд▓ рд░рд╣реЗред OpenCV 4 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ , рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде, рдЙрдиреНрд╣реЛрдВрдиреЗ Intel рдХреЗ OpenVINO рдЯреВрд▓рдХрд┐рдЯ R4 рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░реА рдХреА , рдЬрд┐рд╕рдореЗрдВ OpenCV рд╢рд╛рдорд┐рд▓ рд╣реИред рдЖрдк рд╕реЛрдЪрддреЗ рд╣реИрдВ, рдореИрдВ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд▓рд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реВрдБ, рдореИрдВ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ OpenCV рдлрд╝реЛрд░рдо рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреЗрдЦреВрдБрдЧрд╛, рдФрд░ рдпрд╣рд╛рдБ рдпрд╣ рдХрд╣рдирд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдлреИрд╢рдиреЗрдмрд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдХрд┐ OpenCV IoT рдирд╣реАрдВ рд╣реИ, рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдХреЗ рддрд╣рдд рдЗрд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ - make -j2 рдбрд╛рд▓рдиреЗ рдХреЗ make -j2 рдкрд░реНрдпрд╛рдкреНрдд рдорд┐рд▓рд╛рдк рдирд╣реАрдВ рд╣реИ - рдпрджрд┐ рдЖрдк рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реИрдВ рддреЛ рд╕реБрдмрд╣ рдореЗрдВ рдпрд╣ рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред


рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдПрдХ рд╕рд╛рде рд╣рд╛рде рдорд┐рд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдПрдХ рдПрдЖрд░рдПрдо рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдЪрд▓ рд░рд╣реЗ 32-рдмрд┐рдЯ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдУрдкрдирд╕реАрд╡реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХреИрд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ 64-рдмрд┐рдЯ рдУрдПрд╕ рд╡рд╛рд▓реА рдорд╢реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрддреНрдХреГрд╖реНрдЯ рд╕реАрдкреАрдпреВ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд╛рджреВ рдЯреЛрдирд╛ рдХреНрд░реЙрд╕ рд╕рдВрдХрд▓рди, рдЕрдиреНрдпрдерд╛ рдирд╣реАрдВ!


рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди


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


рддреЛ, OpenCV рдХреЗ рд╕рд╛рде рднрд░рд╡рд╛рдВ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП:


  • рдЙрдмрдВрдЯреВ 16.04 рдЗрдореЗрдЬ рдбреЛрдХрд░ рд╢рд╡
  • рд╣реЛрд╕реНрдЯ рдорд╢реАрди рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ (рдЕрдиреНрдпрдерд╛, рдХреНрдпрд╛ рдмрд╛рдд рд╣реИ, рдпрд╣ рдирд╣реАрдВ рд╣реИ?)
  • ARMhf рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рдХрдВрдкрд╛рдЗрд▓рд░, рд╕рд╛рде рд╣реА рд╕рдВрдмрдВрдзрд┐рдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп

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


рдбреЙрдХрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


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


рдбреЙрдХрд░ рд╕реНрд╡рдпрдВ рдШрдЯрдХреЛрдВ рдХреЗ рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрдкрдХрд░рдг рд╣реИред Dockerfile рд╢реЗрд▓ рдХрдорд╛рдВрдб рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЖрдорддреМрд░ рдкрд░ рд╣реЛрд╕реНрдЯ рдорд╢реАрди рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реЗ рд╕рднреА рддрдерд╛рдХрдерд┐рдд docker рдЫрд╡рд┐ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред


рдбреЙрдХрдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: apt-get delivery рд╕реЗрд╡рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдкреИрдХреЗрдЬ рдХрд╛ рдЖрджреЗрд╢ рджреЗрдВ:


 sudo apt-get install -y docker.io 

рд╣рдо рдбреЙрдХрдЯрд░ рдбреЗрдорди рдХреЛ рд╡рд╣ рд╕рдм рдХреБрдЫ рджреЗрдВрдЧреЗ рдЬреЛ рд╡рд╣ рдкреВрдЫрддрд╛ рд╣реИ рдФрд░ рд╣рдо рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рд▓реЙрдЧрдЖрдЙрдЯ рдХрд░реЗрдВрдЧреЗ (рдиреЛрдЯрд┐рд╕ рддрджрдиреБрд╕рд╛рд░ рд▓реЙрдЧрд┐рди рдХрд░реЗрдВ)ред


 sudo usermod -a -G docker $USER 

рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рддреИрдпрд╛рд░ рдХрд░рдирд╛


рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрд░рдкреАрдЖрдИ 2 рдореЙрдбрд▓ рдмреА) рд╕рдмрд╕реЗ рдЖрдо рддреИрдпрд╛рд░реА рдореЗрдВ рдПрдХ рд░рд╛рд╕реНрдкрд┐рдпрди (рдбреЗрдмрд┐рдпрди рдЖрдзрд╛рд░рд┐рдд) рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдПрдХ рдПрдЖрд░рдПрдорд╡реА 7 рд╕реАрдкреАрдпреВ рд╣реИред рд╣рдо рдЙрдмрдВрдЯреВ 16.04 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ docker рдЫрд╡рд┐ рдмрдирд╛рдПрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдХреНрд░реЙрд╕-рдХрдВрдкрд╛рдЗрд▓рд░, рд╕реЗрдирд╛ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдУрдкрдирд╕реАрд╡реА рдХреЛ рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░ рдПрдХрддреНрд░ рдХрд░реЗрдВрдЧреЗред


рдПрдХ рдбреИрдбреА рдмрдирд╛рдПрдБ рдЬрд╣рд╛рдБ рд╣рдорд╛рд░рд╛ Dockerfile рдЭреВрда рд╣реЛрдЧрд╛:


 mkdir ubuntu16_armhf_opencv && cd ubuntu16_armhf_opencv touch Dockerfile 

armhf apt-get package рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ OS рдФрд░ armhf рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝реЗрдВ:


 FROM ubuntu:16.04 USER root RUN dpkg --add-architecture armhf RUN apt-get update 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ FROM ... , RUN ... рдЬреИрд╕реЗ рдХрдорд╛рдВрдб Dockerfile рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИрдВ рдФрд░ рдпреЗ Dockerfile рдЯреЗрд╕реНрдЯ рдлрд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред


рдЖрдЗрдП рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ ubuntu16_armhf_opencv рд╡рд╛рдкрд╕ ubuntu16_armhf_opencv рдФрд░ рд╣рдорд╛рд░реА ubuntu16_armhf_opencv рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ:


 docker image build ubuntu16_armhf_opencv 

apt-get update рдХрдорд╛рдВрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди, рдЖрдкрдХреЛ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрддреГрддреНрд╡ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: Err:[] [url] xenial[-] armhf Packages


 Ign:30 http://archive.ubuntu.com/ubuntu xenial-backports/main armhf Packages Ign:32 http://archive.ubuntu.com/ubuntu xenial-backports/universe armhf Packages Err:7 http://archive.ubuntu.com/ubuntu xenial/main armhf Packages 404 Not Found Ign:9 http://archive.ubuntu.com/ubuntu xenial/restricted armhf Packages Ign:18 http://archive.ubuntu.com/ubuntu xenial/universe armhf Packages Ign:20 http://archive.ubuntu.com/ubuntu xenial/multiverse armhf Packages Err:22 http://archive.ubuntu.com/ubuntu xenial-updates/main armhf Packages 404 Not Found Ign:24 http://archive.ubuntu.com/ubuntu xenial-updates/restricted armhf Packages Ign:26 http://archive.ubuntu.com/ubuntu xenial-updates/universe armhf Packages Ign:28 http://archive.ubuntu.com/ubuntu xenial-updates/multiverse armhf Packages Err:30 http://archive.ubuntu.com/ubuntu xenial-backports/main armhf Packages 404 Not Found Ign:32 http://archive.ubuntu.com/ubuntu xenial-backports/universe armhf Packages 

рдпрджрд┐ рдЖрдк рдлрд╝рд╛рдЗрд▓ /etc/apt/sources.list рддреЛ рдРрд╕реА рдкреНрд░рддреНрдпреЗрдХ рддреНрд░реБрдЯрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдкрдВрдХреНрддрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ:


рддреНрд░реБрдЯрд┐


 Err:22 http://archive.ubuntu.com/ubuntu xenial-updates/main armhf Packages 404 Not Found 

/Etc/apt/source.list рдореЗрдВ рдкрдВрдХреНрддрд┐ :


 deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted 

рд╕рдорд╛рдзрд╛рди :
рджреЛ рдореЗрдВ рддреЛрдбрд╝:


 deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted 

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


 RUN sed -i -E 's|^deb ([^ ]+) (.*)$|deb [arch=amd64] \1 \2\ndeb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports/ \2|' /etc/apt/sources.list 

рдЕрдм apt-get update рдмрд┐рдирд╛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред


рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рдбрд╛рд▓рддреЗ рд╣реИрдВ


рд╣рдореЗрдВ git , python-pip , cmake рдФрд░ pkg-config , рд╕рд╛рде рд╣реА crossbuild-essential-armhf рдЬреИрд╕реЗ рд╣реЛрд╕реНрдЯ рдкреИрдХреЗрдЬреЛрдВ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ gcc / g ++ рдХреНрд░реЙрд╕-рдХрдВрдкрд╛рдЗрд▓рд░ ( arm-linux-gnueabihf-gcc рдФрд░ arm-linux-gnueabihf-g++ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ arm-linux-gnueabihf-g++ ) рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА:


 RUN apt-get install -y git python-pip cmake pkg-config crossbuild-essential-armhf 

рдЕрд╕рд╛рдорд╛рдиреНрдп рд╕реЗ - рд╣рдо GTK (рд╣рд╛рдИрдЧреБрдИ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рднреА), GStreamer рдФрд░ рдкрд╛рдпрдерди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд┐рджреЗрд╢реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд╕реНрдкрд╖реНрдЯ рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде:


 RUN apt-get install -y --no-install-recommends \ libgtk2.0-dev:armhf \ libpython-dev:armhf \ libgstreamer1.0-dev:armhf \ libgstreamer-plugins-base1.0-dev:armhf \ libgstreamer-plugins-good1.0-dev:armhf \ libgstreamer-plugins-bad1.0-dev:armhf 

рдФрд░ рдлрд┐рд░ рд╣рдо рдХреНрд▓реЛрди рдФрд░ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ, рдЖрд╡рд╢реНрдпрдХ рдЭрдВрдбреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ:


 RUN git clone https://github.com/opencv/opencv --depth 1 RUN mkdir opencv/build && cd opencv/build && \ export PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig && \ cmake -DCMAKE_BUILD_TYPE=Release \ -DOPENCV_CONFIG_INSTALL_PATH="cmake" \ -DCMAKE_TOOLCHAIN_FILE="../opencv/platforms/linux/arm-gnueabi.toolchain.cmake" \ -DWITH_IPP=OFF \ -DBUILD_TESTS=OFF \ -DBUILD_PERF_TESTS=OFF \ -DOPENCV_ENABLE_PKG_CONFIG=ON \ -DPYTHON2_INCLUDE_PATH="/usr/include/python2.7" \ -DPYTHON2_NUMPY_INCLUDE_DIRS="/usr/local/lib/python2.7/dist-packages/numpy/core/include" \ -DENABLE_NEON=ON \ -DCPU_BASELINE="NEON" .. 

рдЬрд╣рд╛рдБ


  • CMAKE_TOOLCHAIN_FILE - рдХреНрд░реЙрд╕-рд╕рдВрдХрд▓рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА cmake рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде (рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдХрд▓рдХ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдореЗрдЬрдмрд╛рди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред


  • WITH_IPP=OFF , - рднрд╛рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВред


  • BUILD_TESTS=OFF , BUILD_PERF_TESTS=OFF , рдЯреЗрд╕реНрдЯ рдмрд┐рд▓реНрдб рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВред


  • OPENCV_ENABLE_PKG_CONFIG=ON - рддрд╛рдХрд┐ pkg-config GTK рдЬреИрд╕реА рдирд┐рд░реНрднрд░рддрд╛ рдкрд╛ рд╕рдХреЗред PKG_CONFIG_PATH рд╕рд╣реА рд░рд╛рд╕реНрддрд╛ рд╣реИ рдЬрд╣рд╛рдБ pkg-config рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рдЦреЗрдЧрд╛ред


  • PYTHON2_INCLUDE_PATH , PYTHON2_NUMPY_INCLUDE_DIRS - PYTHON2_NUMPY_INCLUDE_DIRS рд▓рд┐рдП рдХреНрд░реЙрд╕-рд╕рдВрдХрд▓рди рдЖрд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкрдеред


  • ENABLE_NEON=ON , CPU_BASELINE="NEON" - NEON рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рд╕рдХреНрд╖рдо рдХрд░реЗрдВред


  • OPENCV_CONFIG_INSTALL_PATH - install рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕реНрдерд╛рди рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред



cmake рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдореБрдЦреНрдп рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓ рдЗрдХрдЯреНрдареЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП cmake ):


 -- OpenCV modules: -- To be built: calib3d core dnn features2d flann gapi highgui imgcodecs imgproc java_bindings_generator ml objdetect photo python2 python_bindings_generator stitching ts video videoio -- Disabled: world -- Disabled by dependency: - -- Unavailable: java js python3 -- Applications: tests perf_tests apps -- Documentation: NO -- Non-free algorithms: NO 

рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ, рдЬреИрд╕реЗ рдЬреАрдЯреАрдХреЗ, рдкрд╛рдИ рдЧрдИрдВ:


 -- GUI: -- GTK+: YES (ver 2.24.30) -- GThread : YES (ver 2.48.2) -- GtkGlExt: NO -- -- Video I/O: -- GStreamer: -- base: YES (ver 1.8.3) -- video: YES (ver 1.8.3) -- app: YES (ver 1.8.3) -- riff: YES (ver 1.8.3) -- pbutils: YES (ver 1.8.3) -- v4l/v4l2: linux/videodev2.h 

рдЬреЛ рдХреБрдЫ рднреА рд╢реЗрд╖ рд╣реИ рдЙрд╕реЗ рдХреЙрд▓ make , make install рдХрд░рдирд╛ рдФрд░ рдмрд┐рд▓реНрдб рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рд╣реИ:


 Successfully built 4dae6b1a7d32 

рдХрдВрдЯреЗрдирд░ рдХреЛ рдЯреИрдЧ рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЫрд╡рд┐ id рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:


 docker tag 4dae6b1a7d32 ubuntu16_armhf_opencv:latest docker run ubuntu16_armhf_opencv 

рдФрд░ рд╣рдореЗрдВ рдмрд╕ рдХрдВрдЯреЗрдирд░ рдХреЗ рдмрд╛рд╣рд░ рдЗрдХрдЯреНрдареЗ рдУрдкрдирд╕реАрд╡реА рдХреЛ рдкрдВрдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдмрдирд╛рдП рдЧрдП рдХрдВрдЯреЗрдирд░ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рджреЗрдЦреЗрдВ:


 $ docker container ls --all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e94667fe60d2 ubuntu16_armhf_opencv "/bin/bash" 6 seconds ago Exited (0) 5 seconds ago clever_yalow 

рдФрд░ OpenCV рд╕реНрдерд╛рдкрд┐рдд рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ:


 docker cp e94667fe60d2:/opencv/build/install/ ./ mv install ocv_install 

рдЯреЗрдмрд▓ рд╕реЗрдЯ рдХрд░реЗрдВ


рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдХреЛ ocv_install рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ, рдкрде рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдЕрдЬрдЧрд░ рд╕реЗ OpenCV рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред


 export LD_LIBRARY_PATH=/path/to/ocv_install/lib/:$LD_LIBRARY_PATH export PYTHONPATH=/path/to/ocv_install/python/:$PYTHONPATH 

Https://github.com/chuanqi305/MobileNet-SSD : рд╕реЗ MobileNet-SSD рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЪрд▓рд╛рдПрдБ:


 import cv2 as cv print cv.__file__ classes = ['backgroud', 'aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor'] cap = cv.VideoCapture(0) net = cv.dnn.readNet('MobileNetSSD_deploy.caffemodel', 'MobileNetSSD_deploy.prototxt') cv.namedWindow('Object detection', cv.WINDOW_NORMAL) while cv.waitKey(1) != 27: hasFrame, frame = cap.read() if not hasFrame: break frame_height, frame_width = frame.shape[0], frame.shape[1] blob = cv.dnn.blobFromImage(frame, scalefactor=0.007843, size=(300, 300), mean=(127.5, 127.5, 127.5)) net.setInput(blob) out = net.forward() for detection in out.reshape(-1, 7): classId = int(detection[1]) confidence = float(detection[2]) xmin = int(detection[3] * frame_width) ymin = int(detection[4] * frame_height) xmax = int(detection[5] * frame_width) ymax = int(detection[6] * frame_height) if confidence > 0.5: cv.rectangle(frame, (xmin, ymin), (xmax, ymax), color=(255, 0, 255), thickness=3) label = '%s: %.2f' % (classes[classId], confidence) labelSize, baseLine = cv.getTextSize(label, cv.FONT_HERSHEY_SIMPLEX, 0.5, 1) ymin = max(ymin, labelSize[1]) cv.rectangle(frame, (xmin, ymin - labelSize[1]), (xmin + labelSize[0], ymin + baseLine), (255, 0, 255), cv.FILLED) cv.putText(frame, label, (xmin, ymin), cv.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 0)) cv.imshow('Object detection', frame) 


рдпрд╣ рд╕рдм, рдПрдХ рдкреВрд░реНрдг рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдореЗрдВ 20 рдорд┐рдирдЯ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рдиреАрдЪреЗ Dockerfile рдХреЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕ рдЕрд╡рд╕рд░ рдХреЛ рд▓реЗрддреЗ рд╣реБрдП, рдореИрдВ Dockerfile рдЯреАрдо рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдШреБ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рд▓реЗрдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рдмрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╡ рдерд╛: https://opencv.org/survey-2018.html ред


рдФрд░ рд╣рд╛рдБ, OpenCV 4 рдХреЛ рдмрдзрд╛рдИ! рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЕрд▓рдЧ рдЯреАрдо рдХрд╛ рдХрд╛рдо рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдкреВрд░реЗ рд╕рдореБрджрд╛рдп рдХрд╛ рдХрд╛рдо рд╣реИ - OpenCV 4 рдЖрдкред


 FROM ubuntu:16.04 USER root RUN dpkg --add-architecture armhf RUN sed -i -E 's|^deb ([^ ]+) (.*)$|deb [arch=amd64] \1 \2\ndeb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports/ \2|' /etc/apt/sources.list RUN apt-get update && \ apt-get install -y --no-install-recommends \ cmake \ pkg-config \ crossbuild-essential-armhf \ git \ python-pip \ libgtk2.0-dev:armhf \ libpython-dev:armhf \ libgstreamer1.0-dev:armhf \ libgstreamer-plugins-base1.0-dev:armhf \ libgstreamer-plugins-good1.0-dev:armhf \ libgstreamer-plugins-bad1.0-dev:armhf RUN pip install numpy==1.12.1 RUN git clone https://github.com/opencv/opencv --depth 1 RUN mkdir opencv/build && cd opencv/build && \ export PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig && \ cmake -DCMAKE_BUILD_TYPE=Release \ -DOPENCV_CONFIG_INSTALL_PATH="cmake" \ -DCMAKE_TOOLCHAIN_FILE="../opencv/platforms/linux/arm-gnueabi.toolchain.cmake" \ -DWITH_IPP=OFF \ -DBUILD_TESTS=OFF \ -DBUILD_PERF_TESTS=OFF \ -DOPENCV_ENABLE_PKG_CONFIG=ON \ -DPYTHON2_INCLUDE_PATH="/usr/include/python2.7" \ -DPYTHON2_NUMPY_INCLUDE_DIRS="/usr/local/lib/python2.7/dist-packages/numpy/core/include" \ -DENABLE_NEON=ON \ -DCPU_BASELINE="NEON" .. && make -j4 && make install 

Source: https://habr.com/ru/post/hi430906/


All Articles