Delphi opencv: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ OpenCV Π² Delphi
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ OpenCV Π² Delphi
Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ OpenCV ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΠ»ΠΈΡΡ ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡΡ Π½Π° C++, C, Python ΠΈ Java, Π²Π΅Π΄Ρ Π΄Π»Ρ ΡΡΠΈΡ ΡΠ·ΡΠΊΠΎΠ² Π΅ΡΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ. Π ΡΡΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°ΡΡ Delphi-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ? ΠΠ° ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Π½Π΅ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Delphi-OpenCV, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΉ ΡΠΎΡΡΠΈΠΉΡΠΊΠΈΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠ±ΡΡΡΠΊΠΈ Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ OpenCV. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΠΎ ΠΈΠ»ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ, Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ OpenCV Π² Delphi.
ΠΠΎ ΡΡΡΠΈ Delphi-OpenCV — ΡΡΠΎ Π½Π°Π±ΠΎΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠ΅ΡΠ΅Π²Π΅Π΄ΡΠ½Π½ΡΡ Π½Π° Delphi + ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π΄Π»Ρ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Delphi Π½Π° ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π΅. ΠΠ° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ°ΡΡΠΈ, ΠΎΠ±ΡΡΡΠΊΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π΄Π»Ρ OpenCV Π²Π΅ΡΡΠΈΠΈ 2.4.11, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Delphi 2010 — Delphi 10.1 Berlin. ΠΡΠΎΠ΅ΠΊΡ Delphi-OpenCV Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ, ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠΊΡΡΡΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΊΠΎΠ΄Ρ ΠΈ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π½Π° ΡΠ°ΠΉΡΠ°Ρ GitHub ΠΈ SourceForge. Π’Π°ΠΌ ΠΆΠ΅ ΡΠΊΠ°Π·Π°Π½Ρ ΠΊΠΎΡΠ΅Π»ΡΠΊΠΈ Π°Π²ΡΠΎΡΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΈ Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΎΠΊΠ°Π·Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΈΠ»ΠΈ Π²ΡΡΠ°Π·ΠΈΡΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ½ΠΎΡΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Delphi-OpenCV
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, ΡΠΊΠ°ΡΠ°ΠΉΡΠ΅ Π°ΡΡ ΠΈΠ² Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Delphi-OpenCV ΠΎΡΡΡΠ΄Π°. ΠΠ°ΡΠ΅ΠΌ ΠΏΡΠΈΠ³ΠΎΡΠΎΠ²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ OpenCV:
- Π€Π°ΠΉΠ»Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΠΌΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Visual C++ Π΄Π»Ρ Visual Studio 2013. ΠΠ°ΠΉΡΠΈ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π² Π°ΡΡ ΠΈΠ²Π΅ Delphi-OpenCV: Π² ΠΏΠ°ΠΏΠΊΠ΅ redist\VC2013x86 β ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ 32-Π±ΠΈΡΠ½ΠΎΠΉ Windows ΠΈ Π² ΠΏΠ°ΠΏΠΊΠ΅ redist\VC2013x64 β Π΄Π»Ρ 64-Π±ΠΈΡΠ½ΠΎΠΉ. ΠΠΎΡ ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ: msvcp120.dll, msvcr120.dll, msvcp120d.dll ΠΈ msvcr120d.dll.
- ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ² FFMPEG Π΄Π»Ρ Windows, ΡΠΊΠ°ΡΠ°ΡΡ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π΄Π΅ΡΡ. Π‘ΠΊΠ°ΡΠΈΠ²Π°ΡΡ Π½ΡΠΆΠ½ΠΎ Π²Π΅ΡΡΠΈΡ Shared, Ρ.ΠΊ. Π² Π½Π΅ΠΉ Π΅ΡΡΡ Π½ΡΠΆΠ½ΡΠ΅ .dll ΡΠ°ΠΉΠ»Ρ. ΠΠ· ΡΠΊΠ°ΡΠ°Π½Π½ΠΎΠ³ΠΎ Π°ΡΡ ΠΈΠ²Π° Π½Π°ΠΌ Π½ΡΠΆΠ½Ρ Π²ΡΠ΅ .dll ΡΠ°ΠΉΠ»Ρ ΠΈ ΠΏΠ°ΠΏΠΊΠΈ bin, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ avcodec-57.dll, avdevice-57.dll, avfilter-6.dll, avformat-57.dll ΠΈ Ρ.Π΄.
- ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° OpenCV, ΡΠΊΠ°ΡΠ°ΡΡ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π΄Π΅ΡΡ. ΠΠΎΡΠ»Π΅ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π°ΡΡ ΠΈΠ²Π° Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ .dll ΡΠ°ΠΉΠ»Ρ ΠΈΠ· ΠΏΠ°ΠΏΠΎΠΊ \build\x64\vc12\bin (Π·Π΄Π΅ΡΡ 64-Π±ΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ) ΠΈ \build\x86\vc12\bin (Π·Π΄Π΅ΡΡ 32-Π±ΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ), Π° Π΅ΡΠ»ΠΈ ΡΠΎΡΠ½Π΅Π΅, ΡΠΎ ΡΠ°ΠΉΠ»Ρ Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, ΠΎΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΠΈΠΌΠΈΡΡ Π½Π° 2411.dll ΠΈΠ»ΠΈ 2411d.dll.
- ΠΠ΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌ (FFMPEG) ΡΡΠ΅Π±ΡΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ SDL 2.0 ΠΈ SDL 1.2 (ΡΠ°ΠΉΠ»Ρ SDL.dll ΠΈ SDL2.dll), ΡΠΊΠ°ΡΠ°ΡΡ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π΄Π΅ΡΡ.
Π‘ΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π²ΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΠΏΠ°ΠΏΠΊΠΈ:
- ΠΡΠ»ΠΈ Ρ Π²Π°Ρ 32-Π±ΠΈΡΠ½Π°Ρ Windows, ΡΠΎ ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ 32-Π±ΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΏΠ°ΠΏΠΊΡ C:\Windows\System32\.
- ΠΡΠ»ΠΈ Ρ Π²Π°Ρ 64-Π±ΠΈΡΠ½Π°Ρ Windows, ΡΠΎ:
- ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ 64-Π±ΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΏΠ°ΠΏΠΊΡ C:\Windows\System32\, Π΅ΡΠ»ΠΈ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ 64-Π±ΠΈΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ;
- ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ 32-Π±ΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΏΠ°ΠΏΠΊΡ C:\Windows\SysWOW64\, Π΅ΡΠ»ΠΈ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ 32-Π±ΠΈΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π€Π°ΠΉΠ»Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΠΌΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Visual C++ Π΄Π»Ρ Visual Studio 2013 ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°ΡΠ°ΡΡ Π·Π΄Π΅ΡΡ.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π½Π° ΠΌΠ΅ΡΡΠ°Ρ , ΡΠ°ΡΠΏΠ°ΠΊΡΠΉΡΠ΅ Π°ΡΡ ΠΈΠ² Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Delphi-OpenCV Π² ΡΠ΄ΠΎΠ±Π½ΠΎΠ΅ Π΄Π»Ρ Π²Π°Ρ ΠΌΠ΅ΡΡΠΎ (Ρ ΠΌΠ΅Π½Ρ ΡΡΠΎ C:\Projects\OpenCV), Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠΏΠΈΡΠΈΡΠ΅ ΠΏΡΡΠΈ ΠΊ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΠΌ ΠΏΠ°ΠΏΠΊΠ°ΠΌ Π² ΡΡΠ΅Π΄Π΅ Delphi. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π·Π°ΠΊΡΠΎΠΉΡΠ΅ Π²ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Ρ Π²Π°Ρ ΠΎΡΠΊΡΡΡΡ (ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ Β«File -> Close AllΒ») ΠΈ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ Π½Π°ΡΡΡΠΎΠ΅ΠΊ (ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ Β«Tools -> Options..Β»). Π Π΄ΠΈΠ°Π»ΠΎΠ³Π΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΠΏΡΡΠ΅ΠΉ (Β«Environment Options -> Delphi Options -> Library -> Library Path:Β») ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΡΠΈ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΠ°ΠΏΠΊΠ°ΠΌ:
<PROJECT_ROOT>\source
<PROJECT_ROOT>\source\utils
<PROJECT_ROOT>\source\component
<PROJECT_ROOT>\source\sdl
<PROJECT_ROOT>\source\sdl2
<PROJECT_ROOT>\source\opengl
<PROJECT_ROOT>\source\ffmpeg
<PROJECT_ROOT>\resource\facedetectxml
Π³Π΄Π΅ <PROJECT_ROOT> — ΡΡΠΎ ΠΏΠ°ΠΏΠΊΠ°, ΠΊΡΠ΄Π° Π²Ρ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°Π»ΠΈ Π°ΡΡ ΠΈΠ². Π’.Π΅. Ρ ΠΌΠ΅Π½Ρ ΠΏΠ°ΠΏΠΊΠ° <PROJECT_ROOT>\source Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΠΈΠ΄: C:\Projects\OpenCV\source.
ΠΠ°ΡΠ΅ΠΌ ΠΎΡΠΊΡΠΎΠΉΡΠ΅, ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ (ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π² ΡΠΏΠΈΡΠΊΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ):
<PROJECT_ROOT>\source\component\DelphiXX\OpenCVXXX.dpk
<PROJECT_ROOT>\source\component\DelphiXX\dclCommonOpenCVXXX.dpk
<PROJECT_ROOT>\source\component\DelphiXX\dclVCLOpenCVXXX.dpk
<PROJECT_ROOT>\source\component\DelphiXX\dclFMXOpenCVXXX.dpk
<PROJECT_ROOT>\source\component\DelphiXX\ dclFFMSourceXXX.dpk
Π³Π΄Π΅ <PROJECT_ROOT> — ΡΡΠΎ ΠΏΠ°ΠΏΠΊΠ°, ΠΊΡΠ΄Π° Π²Ρ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°Π»ΠΈ Π°ΡΡ ΠΈΠ², DelphiXX β ΡΡΠΎ ΠΏΠ°ΠΏΠΊΠ° Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Delphi (Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Embarcadero RAD Studio 10 Seattle, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΌΠ΅Π½Ρ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠ°ΠΏΠΊΠ° Delphi 10 Seattle), XXX β ΡΡΠΎ Π½ΠΎΠΌΠ΅Ρ Π²Π΅ΡΡΠΈΠΈ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ (Ρ Delphi 10 Seattle Π½ΠΎΠΌΠ΅Ρ Π²Π΅ΡΡΠΈΠΈ 23.0, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΠΌΠ΅ΡΡΠΎ XXX Ρ ΠΌΠ΅Π½Ρ Π±ΡΠ΄Π΅Ρ 230). Π’.Π΅. Π΄Π»Ρ ΠΌΠΎΠ΅Π³ΠΎ ΡΠ»ΡΡΠ°Ρ ΠΏΡΡΠΈ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌ Π±ΡΠ΄ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ:
C:\Projects\OpenCV\source\component\Delphi 10 Seattle\OpenCV230.dpk
C:\Projects\OpenCV\source\component\Delphi 10 Seattle\dclCommonOpenCV230.dpk
C:\Projects\OpenCV\source\component\Delphi 10 Seattle\dclVCLOpenCV230.dpk
C:\Projects\OpenCV\source\component\Delphi 10 Seattle\dclFMXOpenCV230.dpk
C:\Projects\OpenCV\source\component\Delphi 10 Seattle\dclFFMSource230.dpk
ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½Π΅ ΠΌΠ΅Π½ΡΠΉΡΠ΅.
ΠΡΠΈΠΌΠ΅ΡΡ Delphi-OpenCV
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Delphi-OpenCV ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π² Π°ΡΡ ΠΈΠ²Π΅. ΠΡΡΠ°ΡΠΈ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅. ΠΠΎΡ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π·Π΄Π΅ΡΡ Π΅ΡΡΡ:
1. LibDemo β Π³ΡΡΠΏΠΏΠ° ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡ. ΠΡΡΡ ΠΊ Π³ΡΡΠΏΠΏΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² — <PROJECT_ROOT>\samples\LibDemo\LibDemo.groupproj. ΠΠ΄Π΅ΡΡ Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ Π·Π°Ρ Π²Π°ΡΠ° Π²ΠΈΠ΄Π΅ΠΎ Ρ ΠΊΠ°ΠΌΠ΅ΡΡ, Π·Π°ΠΏΠΈΡΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² ΡΠ°ΠΉΠ» ΠΈ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ· Π½ΠΈΡ , ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠ»ΡΡΡΠΎΠ², ΠΏΠΎΠΈΡΠΊΠ° ΠΊΠΎΠ½ΡΡΡΠΎΠ², ΡΠΈΠ³ΡΡ ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ (ΠΏΠΎΠΈΡΠΊ ΡΠ°Π±Π»ΠΎΠ½Π°, ΡΠΌ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ Π½ΠΈΠΆΠ΅).
2. MultiDemo β Π³ΡΡΠΏΠΏΠ° ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΠΈΠ΄Π΅ΠΎ. ΠΠ°Ρ ΠΎΠ΄ΠΈΡΡΡ Π·Π΄Π΅ΡΡ: <PROJECT_ROOT>\samples\MultiDemo\MultiDemo.groupproj. ΠΠ΄Π΅ΡΡ Ρ Π½Π°ΡΡΠ» ΠΏΡΠΈΠΌΠ΅ΡΡ Π·Π°Ρ Π²Π°ΡΠ° Π²ΠΈΠ΄Π΅ΠΎ Ρ IP-ΠΊΠ°ΠΌΠ΅ΡΡ (Π΄Π»Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π΄ΡΠ΅ΡΠ° ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ IP-ΠΊΠ°ΠΌΠ΅Ρ, ΡΠΏΠΈΡΠΎΠΊ ΡΠΌ. Π½ΠΈΠΆΠ΅), ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π½ΠΎΠΌΠ΅ΡΠ° ΠΌΠ°ΡΠΈΠ½Ρ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ (ΡΠΌ. ΡΠΈΡΡΠ½ΠΎΠΊ Π½ΠΈΠΆΠ΅), ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»ΠΈΡ, ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ, ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ Π΄ΡΡΠ³ΠΈΠ΅.
3. FFMPEG — ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ² FFMPEG. ΠΡΡΠΏΠΏΠ° ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π·Π΄Π΅ΡΡ: <PROJECT_ROOT>\samples\FFMpeg\FFMPEG.groupproj. ΠΠ΄Π΅ΡΡ Ρ Π½Π°ΡΡΠ» ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°ΡΠ΅Π»Π΅ΠΉ (ΡΠΌ. ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ ΡΠ½ΠΈΠ·Ρ) ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΠΈΠ΄Π΅ΠΎ. ΠΡΠ°Π²Π΄Π°, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π½Π΅ Π·Π°Ρ ΠΎΡΠ΅Π»ΠΈ Ρ ΠΌΠ΅Π½Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈΠ·-Π·Π° ΠΎΡΠΈΠ±ΠΊΠΈ E2003 Undeclared identifier: ‘avcodec_alloc_frame’. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ avcodec_alloc_frame Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Π° ΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Ρ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ av_frame_alloc. Π§ΡΠΎΠ±Ρ ΠΏΡΠΈΠΌΠ΅ΡΡ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ, ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ avcodec_alloc_frame Π½Π° av_frame_alloc. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, ΡΡΠ½ΠΊΡΠΈΡ avcodec_get_frame_defaults Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π½Π° av_frame_unref.
4. ComponentsDemo β Π³ΡΡΠΏΠΏΠ° ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΠ°Ρ ΠΎΠ΄ΠΈΡΡΡ Π·Π΄Π΅ΡΡ: <PROJECT_ROOT>\samples\Components\ComponentsDemo.groupproj. ΠΠ΄Π΅ΡΡ Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ Π·Π°Ρ Π²Π°ΡΠ° Π²ΠΈΠ΄Π΅ΠΎ Ρ Π²Π΅Π±-ΠΊΠ°ΠΌΠ΅ΡΡ, IP-ΠΊΠ°ΠΌΠ΅ΡΡ (ΡΠΌ. ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ ΡΠ½ΠΈΠ·Ρ) ΠΈΠ»ΠΈ ΠΈΠ· ΡΠ°ΠΉΠ»Π°, ΠΏΠΎΠΈΡΠΊΠ° ΡΠ°Π±Π»ΠΎΠ½Π° Π½Π° Π²ΠΈΠ΄Π΅ΠΎ, Π·Π°ΠΏΠΈΡΡ Π²ΠΈΠ΄Π΅ΠΎ Ρ Π²Π΅Π±-ΠΊΠ°ΠΌΠ΅ΡΡ Π² ΡΠ°ΠΉΠ» ΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
Π Π²ΠΎΡ ΡΠΏΠΈΡΠΎΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ IP-ΠΊΠ°ΠΌΠ΅Ρ Π΄Π»Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ²:
ΠΠ°ΠΉΠΊΠ°Π», ΠΠΈΡΡΠ²ΡΠ½ΠΊΠ° — rtmp://bm.isc.irk.ru/v2/v2
ΠΠΊΠ°ΡΠ΅ΡΠΈΠ½Π±ΡΡΠ³, ΠΠ»ΠΎΡΠΈΠ½ΠΊΠ° — rtsp://80.78.116.125:1935/rtplive/plot_hd.stream
ΠΠΊΠ°ΡΠ΅ΡΠΈΠ½Π±ΡΡΠ³, ΠΠΎΠΎΠΏΠ°ΡΠΊ, ΡΠ»ΠΎΠ½ΠΈΡ
Π° ΠΠ°ΡΠ° — rtmp://80.78.116.125:1935/rtplive/zoo_ek_sd.stream
ΠΠΊΠ°ΡΠ΅ΡΠΈΠ½Π±ΡΡΠ³, ΠΠ»ΠΎΡΠ°Π΄Ρ 1905 Π³. — rtmp://80.78.116.125:1935/rtplive/5goda_sd.stream
Π‘ΠΎΠ»ΠΈΠΊΠ°ΠΌΡΠΊ, Π‘ΠΎΠ±ΠΎΡΠ½Π°Ρ ΠΏΠ»ΠΎΡΠ°Π΄Ρ — rtmp://80.78.116.125:1935/rtplive/solikamsk_hd.stream
ΠΡΠΎΠ³
ΠΠ΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΅ΡΡ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ Π² Delphi. ΠΡΠΈΠΌΠ΅ΡΠΎΠ² Π·Π΄Π΅ΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ, Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π½Π° ΡΠ°ΠΉΡΠ΅ OpenCV Π·Π΄Π΅ΡΡ. Π Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΏΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ, ΡΠΎ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ OpenCV Π² Delphi / Π₯Π°Π±Ρ
Π’Π°ΠΊ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ, ΡΡΠΎ Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Delphi Π² ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ (ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΡΠΊΡΡΡΡΠ΅ ΠΈ Π·Π°ΠΊΡΡΡΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ) ΠΈ Π²ΠΎΡ ΠΌΠ½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΠΎΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΎΡΠΊΡΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ OpenCV. Π§ΡΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°ΡΡ, Π²Π΅Π΄Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ OpenCV ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Delphi Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π° ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΡΡΡ Π½Π° C ΡΠ°Π΄ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄ΠΎΠ»Π³ΠΎ.
ΠΠΎ Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎβ¦
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°Π² Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅, Ρ Π½Π°ΡΠ΅Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenCV Π² Delphi.
ΠΠ΅ΡΠ²ΡΠΉ, Π²ΡΠΎΡΠΎΠΉ, ΡΡΠ΅ΡΠΈΠΉ ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ²Π΅ΠΆΠΈΠΉ ΠΈ ΡΠ΄Π°ΡΠ½ΡΠΉ β ΡΠ΅ΡΠ²Π΅ΡΡΡΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΈ Π²Π·ΡΠ» Π·Π° ΠΎΡΠ½ΠΎΠ²Ρ.
ΠΡΠΎΠ΅ΠΊΡ Π½Π° github ΠΌΠ½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π»ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ OpenCV, Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π½Π° Delphi, Π½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡ Π·Π°Π±ΡΠΎΡΠ΅Π½ Π°Π²ΡΠΎΡΠΎΠΌ ΠΈ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π²Π·ΡΡΡΡΡ Π·Π° ΡΠ²ΠΎΠΉ.
ΠΡΠ΅ ΡΠ΅ΠΊΡΡΠΈΠ΅ Π½Π°ΡΠ°Π±ΠΎΡΠΊΠΈ Ρ Π²ΡΠ»ΠΎΠΆΠΈΠ» Π½Π° code.google.com/p/opencv-delphi-new
Π Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ΄Π΅Π»Π°Π½ΠΎ:
1. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° RAD Studio XE3.
2. ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: cvFlip, cvClearMemStorage, cvCreateChildMemStorage, cvRectangle, cvRetrieveFrame, cvIntegral, cvGetPerspectiveTransform, cvWarpPerspective, cvCreateMat, cv2DRotationMatrix, cvWarpAffine, cvFindContours, cvHaarDetectObjects.
3. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ 6 Π½ΠΎΠ²ΡΡ
ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²:
FaceDetect β ΠΡΠΈΠΌΠ΅Ρ Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»ΠΈΡΠ° Π² Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡΠΎΠΊΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π₯Π°ΡΠ°.
FindContours β ΠΠ°Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
Integral β ΠΠ½ΡΠ΅Π³ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
WarpAffine β Π’ΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ β Π°ΡΡΠΈΠ½Π½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ (ΠΠΎΠ²ΠΎΡΠΎΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ ΡΠ³ΠΎΠ»).
WrapPrespective β Π’ΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ β Π³ΠΎΠΌΠΎΠ³ΡΠ°ΡΠΈΡ (ΠΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½Π°Ρ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡ).
MatchShapes β ΠΠΎΠΈΡΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ (Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΏΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ°ΠΌ ΠΈΡ
ΠΊΠΎΠ½ΡΡΡΠΎΠ²).
Π Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ Ρ ΠΏΠΎΡΡΠ°ΡΠ°Π»ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΠΏΠΈΡΠ°ΡΡ Π²ΡΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΆΠ΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°.
ΠΡΠ»ΠΈ ΠΊΠΎΠΌΡ-ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° ΡΠ΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenCV Π² Delphi, ΡΠΎ ΠΏΠΈΡΠΈΡΠ΅ ΠΌΠ½Π΅ Π½Π° email ΠΈΠ»ΠΈ ΠΎΡΡΠ°Π²Π»ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΡΠ»ΠΈ ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenCV Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°, ΡΠΎ ΠΌΠΎΠ³Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ°ΡΠ΅ΠΉ, ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΏΠΈΡΠΈΡΠ΅, ΠΊΠ°ΠΊΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenCV ΠΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ.
1. OpenCV ΡΠ°Π³ Π·Π° ΡΠ°Π³ΠΎΠΌ. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. / ΠΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ΅ Π·ΡΠ΅Π½ΠΈΠ΅ / RoboCraft. Π ΠΎΠ±ΠΎΡΡ? ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ!
ΠΠ³Π»Π°Π²Π»Π΅Π½ΠΈΠ΅
1. OpenCV ΡΠ°Π³ Π·Π° ΡΠ°Π³ΠΎΠΌ. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.
ΠΡΠΎ OpenCV (Open Source Computer Vision Library) Π±ΡΠ»ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π·Π΄Π΅ΡΡ.
ΠΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎ 1-ΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ°Π·Π°ΡΠ°Π±Π°ΡΡΠ²Π°Π»Π°ΡΡ Π² Π¦Π΅Π½ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Intel (ΠΏΡΠΈΡΡΠΌ, ΡΠΎΡΡΠΈΠΉΡΠΊΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π² ΠΠΈΠΆΠ½Π΅ΠΌ ΠΠΎΠ²Π³ΠΎΡΠΎΠ΄Π΅).
OpenCV Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° ΡΠ·ΡΠΊΠ΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ (C/C++) ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π΄Π»Ρ: ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠΈ ΠΊΠ°ΠΌΠ΅ΡΡ ΠΏΠΎ ΡΡΠ°Π»ΠΎΠ½Ρ, ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡ
ΠΎΠ΄ΡΡΠ²Π°, Π°Π½Π°Π»ΠΈΠ· ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΎΡΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ ΡΠ»Π΅ΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, 3D-ΡΠ΅ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ, ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΠΆΠ΅ΡΡΠΎΠ² ΠΈ Ρ.Π΄.
ΠΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π° Π·Π° ΡΡΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΠΎΡΠΊΡΡΡΠΎΡΡΠΈ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π² ΡΡΠ΅Π±Π½ΡΡ , ΡΠ°ΠΊ ΠΈ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ ΡΠ΅Π»ΡΡ .
Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, OpenCV β ΡΡΠΎ Π½Π°Π±ΠΎΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ , ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°ΠΌΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
cxcore β ΡΠ΄ΡΠΎ
* ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ:
β Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠΌΠΈ ΡΠΈΡΠ»ΠΎΠ²ΡΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ
β ΠΌΠ°ΡΡΠΈΡΠ½Π°Ρ Π°Π»Π³Π΅Π±ΡΠ°, ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Ρ-ΡΠΈΠΈ, Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ
ΡΠΈΡΠ΅Π»
β ΠΠ°ΠΏΠΈΡΡ/Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ
Π²/ΠΈΠ· XML
β Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ 2D Π³ΡΠ°ΡΠΈΠΊΠΈ
CV β ΠΌΠΎΠ΄ΡΠ»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ
β Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ (ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ, Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠΎΠ²ΡΡ
ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈ Ρ. Π΄.)
β Π°Π½Π°Π»ΠΈΠ· ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (Π²ΡΠ±ΠΎΡ ΠΎΡΠ»ΠΈΡΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ², ΠΌΠΎΡΡΠΎΠ»ΠΎΠ³ΠΈΡ, ΠΏΠΎΠΈΡΠΊ ΠΊΠΎΠ½ΡΡΡΠΎΠ², Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ)
β Π°Π½Π°Π»ΠΈΠ· Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ, ΡΠ»Π΅ΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ
β ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ Π»ΠΈΡ
β ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠ° ΠΊΠ°ΠΌΠ΅Ρ, ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ
Highgui β ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ, ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
β Π·Π°Ρ
Π²Π°Ρ Π²ΠΈΠ΄Π΅ΠΎ Ρ ΠΊΠ°ΠΌΠ΅Ρ ΠΈ ΠΈΠ· Π²ΠΈΠ΄Π΅ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΡΠ΅Π½ΠΈΠ΅/Π·Π°ΠΏΠΈΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ.
β ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ UI (Π²ΡΠ΅ Π΄Π΅ΠΌΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ HighGUI)
Cvaux β ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
β ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ². Π·ΡΠ΅Π½ΠΈΠ΅: ΡΡΠ΅ΡΠ΅ΠΎ ΠΊΠ°Π»ΠΈΠ±ΡΠ°ΡΠΈΡ, ΡΠ°ΠΌΠΎ ΠΊΠ°Π»ΠΈΠ±ΡΠ°ΡΠΈΡ
β ΠΏΠΎΠΈΡΠΊ ΡΡΠ΅ΡΠ΅ΠΎ-ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ, ΠΊΠ»ΠΈΠΊΠΈ Π² Π³ΡΠ°ΡΠ°Ρ
β Π½Π°Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ΅ΡΡ Π»ΠΈΡΠ°
CvCam β Π·Π°Ρ
Π²Π°Ρ Π²ΠΈΠ΄Π΅ΠΎ
β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ Π·Π°Ρ
Π²Π°Ρ Π²ΠΈΠ΄Π΅ΠΎ Ρ ΡΠΈΡΡΠΎΠ²ΡΡ
Π²ΠΈΠ΄Π΅ΠΎ-ΠΊΠ°ΠΌΠ΅Ρ ( ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° ΠΈ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ
Π²Π΅ΡΡΠΈΡΡ
ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ )
Π’Π΅ΠΊΡΡΠ°Ρ (Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΡΠ°Π²ΠΊΠΈ ΡΡΠ°ΡΡΠΈ) ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ 2.4.1.
Π‘ΠΊΠ°ΡΠ°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π΄Π΅ΡΡ:
http://sourceforge.net/projects/opencvlibrary/
Π Π²Π΅ΡΡΠΈΠΈ 2.2 ΡΡΡΡΠΊΡΡΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ΅ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° β ΡΠ΅ΠΏΠ΅ΡΡ Π²ΠΌΠ΅ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΈΡ
ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ (cxcore, Cvaux, Highgui, Cvaux) Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° OpenCV ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠ°Π½Π°Π»ΡΠ½ΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
opencv_core β ΡΠ΄ΡΠΎ: Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ, Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ (ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ
ΡΠΈΡΠ΅Π», DFT, DCT, Π²Π²ΠΎΠ΄/Π²ΡΠ²ΠΎΠ΄ Π² XML ΠΈ Ρ.ΠΏ.)
opencv_imgproc β ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (ΡΠΈΠ»ΡΡΡΡ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Ρ. Π΄.).
opencv_highgui β ΠΏΡΠΎΡΡΠΎΠΉ UI, Π·Π°Π³ΡΡΠ·ΠΊΠ°/ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ.
opencv_ml β ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ (SVM, Π΄Π΅ΡΠ΅Π²ΡΡ ΠΏΡΠΈΠ½ΡΡΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΈ Ρ. Π΄.).
opencv_features2d β ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ (SURF).
opencv_video β Π°Π½Π°Π»ΠΈΠ· Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (ΠΎΠΏΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΡΠΎΠΊ, ΡΠ°Π±Π»ΠΎΠ½Ρ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ, ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ½Π°).
opencv_objdetect β Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ (Π²Π΅ΠΉΠ²Π»Π΅ΡΡ Π₯Π°Π°ΡΠ°, HOG ΠΈ Ρ. Π΄.).
opencv_calib3d β ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠ° ΠΊΠ°ΠΌΠ΅ΡΡ, ΠΏΠΎΠΈΡΠΊ ΡΡΠ΅ΡΠ΅ΠΎ-ΡΠΎΠΎΡΠ²Π΅ΡΡΡΡΠ²ΠΈΡ ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠ΅Ρ
ΠΌΠ΅ΡΠ½ΡΡ
Π΄Π°Π½Π½ΡΡ
.
opencv_flann β Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΡ
ΡΠΎΡΠ΅Π΄Π΅ΠΉ (FLANN).
opencv_contrib β ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄, Π΅ΡΠ΅ Π½Π΅ Π³ΠΎΡΠΎΠ²ΡΠΉ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ.
opencv_legacy β ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΉ ΠΊΠΎΠ΄, ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π½ΡΠΉ ΡΠ°Π΄ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ.
opencv_gpu β ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ OpenCV Π·Π° ΡΡΠ΅Ρ CUDA (NVidia).
Π§ΠΈΡΠ°ΡΡ Π΄Π°Π»Π΅Π΅: 2. OpenCV ΡΠ°Π³ Π·Π° ΡΠ°Π³ΠΎΠΌ. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°.
ΠΠ½ΠΈΠ³Π° ΠΏΡΠΎ OpenCV:
Gary Bradski, Adrian Kaehler Β«Learning OpenCV. Computer vision with the OpenCV library.Β»
Π‘ΡΡΠ»ΠΊΠΈ
ru.wikipedia.org/wiki/OpenCV
opencv.org
docs.opencv.org
www.compvision.ru/forum/index.php?showforum=4
ΠΠ²ΡΠΎΡ: Vladimir (noonv), 2010-2011
ΠΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΠΎ Π΄Π»Ρ www.robocraft.ru
ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ΅ΡΡΡΡΡ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ
Π±Π΅Π· ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π°Π²ΡΠΎΡΠ° Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Ρ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ OpenCV Π² Delphi
Π’Π°ΠΊ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ, ΡΡΠΎ Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Delphi Π² ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ (ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΡΠΊΡΡΡΡΠ΅ ΠΈ Π·Π°ΠΊΡΡΡΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ) ΠΈ Π²ΠΎΡ ΠΌΠ½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΠΎΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΎΡΠΊΡΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ OpenCV. Π§ΡΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°ΡΡ, Π²Π΅Π΄Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ OpenCV ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Delphi Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π° ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΡΡΡ Π½Π° C ΡΠ°Π΄ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄ΠΎΠ»Π³ΠΎ.
ΠΠΎ Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎβ¦
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°Π² Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅, Ρ Π½Π°ΡΠ΅Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenCV Π² Delphi.
ΠΠ΅ΡΠ²ΡΠΉ, Π²ΡΠΎΡΠΎΠΉ, ΡΡΠ΅ΡΠΈΠΉ ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ²Π΅ΠΆΠΈΠΉ ΠΈ ΡΠ΄Π°ΡΠ½ΡΠΉ β ΡΠ΅ΡΠ²Π΅ΡΡΡΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΈ Π²Π·ΡΠ» Π·Π° ΠΎΡΠ½ΠΎΠ²Ρ.
ΠΡΠΎΠ΅ΠΊΡ Π½Π° github ΠΌΠ½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π»ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ OpenCV, Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π½Π° Delphi, Π½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡ Π·Π°Π±ΡΠΎΡΠ΅Π½ Π°Π²ΡΠΎΡΠΎΠΌ ΠΈ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π²Π·ΡΡΡΡΡ Π·Π° ΡΠ²ΠΎΠΉ.
ΠΡΠ΅ ΡΠ΅ΠΊΡΡΠΈΠ΅ Π½Π°ΡΠ°Π±ΠΎΡΠΊΠΈ Ρ Π²ΡΠ»ΠΎΠΆΠΈΠ» Π½Π° code.google.com/p/opencv-delphi-new/
Π Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ΄Π΅Π»Π°Π½ΠΎ:
1. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° RAD Studio XE3.
2. ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: cvFlip, cvClearMemStorage, cvCreateChildMemStorage, cvRectangle, cvRetrieveFrame, cvIntegral, cvGetPerspectiveTransform, cvWarpPerspective, cvCreateMat, cv2DRotationMatrix, cvWarpAffine, cvFindContours, cvHaarDetectObjects.
3. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ 6 Π½ΠΎΠ²ΡΡ
ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²:
FaceDetect β ΠΡΠΈΠΌΠ΅Ρ Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»ΠΈΡΠ° Π² Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡΠΎΠΊΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π₯Π°ΡΠ°.
FindContours β ΠΠ°Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
Integral β ΠΠ½ΡΠ΅Π³ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
WarpAffine β Π’ΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ β Π°ΡΡΠΈΠ½Π½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ (ΠΠΎΠ²ΠΎΡΠΎΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ ΡΠ³ΠΎΠ»).
WrapPrespective β Π’ΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ β Π³ΠΎΠΌΠΎΠ³ΡΠ°ΡΠΈΡ (ΠΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½Π°Ρ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡ).
MatchShapes β ΠΠΎΠΈΡΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ (Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΏΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ°ΠΌ ΠΈΡ
ΠΊΠΎΠ½ΡΡΡΠΎΠ²).
Π Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ Ρ ΠΏΠΎΡΡΠ°ΡΠ°Π»ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΠΏΠΈΡΠ°ΡΡ Π²ΡΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΆΠ΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°.
ΠΡΠ»ΠΈ ΠΊΠΎΠΌΡ-ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° ΡΠ΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenCV Π² Delphi, ΡΠΎ ΠΏΠΈΡΠΈΡΠ΅ ΠΌΠ½Π΅ Π½Π° email ΠΈΠ»ΠΈ ΠΎΡΡΠ°Π²Π»ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΡΠ»ΠΈ ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenCV Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°, ΡΠΎ ΠΌΠΎΠ³Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ°ΡΠ΅ΠΉ, ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΏΠΈΡΠΈΡΠ΅, ΠΊΠ°ΠΊΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenCV ΠΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ.
ΠΠ²ΡΠΎΡ: Sleuthhound
ΠΡΡΠΎΡΠ½ΠΈΠΊ
ΠΠΠ£ ΠΠΠ’Π£ΠΠ’ | ΠΠ΅ΠΊΡΠΈΡ | ΠΠ°ΡΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ OpenCV
ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ: Π Π»Π΅ΠΊΡΠΈΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΡΡ: ΠΎΠ±Π·ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ OpenCV, ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° C/C++ ΠΈ Python.
ΠΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ ΠΊ Π»Π΅ΠΊΡΠΈΠΈ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°ΡΠ°ΡΡ Π·Π΄Π΅ΡΡ.
1. ΠΠ°ΡΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ OpenCV
Π¦Π΅Π»Ρ Π½Π°ΡΡΠΎΡΡΠ΅Π³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π° β ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠ΅ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ OpenCV (http://opencv.org) ΠΈ Π΄Π°ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΎΠ»ΡΠΎΠΊ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ Π΅Π³ΠΎ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ.
1.1. ΠΠ±Π·ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
OpenCV β de facto ΡΠ°ΠΌΠ°Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ. ΠΠ½Π° Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° C/C++, Π΅Π΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΎΡΠΊΡΡΡ. Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ 1000 ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ². ΠΠ½Π° ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ c 1998 Π³., ΡΠ½Π°ΡΠ°Π»Π° Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΠ½ΡΠ΅Π», ΡΠ΅ΠΏΠ΅ΡΡ Π² Itseez ΠΏΡΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΡΠ°ΡΡΠΈΠΈ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°. Π Π²ΡΡΠΎΠΊΠΎΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°Π³ΡΡΠ·ΠΎΠΊ, ΠΈΡ Π±ΠΎΠ»Π΅Π΅ 6000000 Π·Π°Π³ΡΡΠ·ΠΎΠΊ (Π±Π΅Π· ΡΡΠ΅ΡΠ° svn/git ΡΡΠ°ΡΠΈΠΊΠ°).
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Halcon. ΠΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅, Π΄Π΅Π»Π°ΡΡΠΈΠ΅ Π°ΠΊΡΠ΅Π½Ρ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, libmv. OpenCV β ΡΠ°ΠΌΠ°Ρ Π±ΠΎΠ»ΡΡΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΎ ΡΠΈΡΠΎΡΠ΅ ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ BSD, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΠΈ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π² ΠΎΡΠΊΡΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠ°ΠΊ ΠΈ Π² Π·Π°ΠΊΡΡΡΡΡ , ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ . ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π² ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΡΡΠΊΠΈ ΠΊΠΎΠ΄Π°. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ β Π½Π°Π»ΠΈΡΠΈΠ΅ Π² ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°Ρ ΠΊΠΎΠΏΠΈΠΈ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ OpenCV.
ΠΠ·-Π·Π° Π»ΠΈΠ±Π΅ΡΠ°Π»ΡΠ½ΠΎΠΉ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠΌΠΈ, ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠΌΠΈ, ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠ°ΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, NVidia, Willow Garage, Intel, Google, Stanford University. ΠΠΎΠΌΠΏΠ°Π½ΠΈΠΈ NVidia ΠΈ WillowGarage ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠΏΠΎΠ½ΡΠΈΡΡΡΡ Π΅Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ.
ΠΡΡΡ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΡΠΌΠ°ΡΡ, ΡΡΠΎ Π½Π΅ Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ OpenCV, Π°ΡΠΈΡΠΈΡΡΡΡ ΡΡΠΎ. ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΡΠ΅Π½Ρ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ Π°Π²ΡΠΎΡΠ°ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ OpenCV:
- Π‘ΠΈΡΡΠ΅ΠΌΠ° Π·ΡΠ΅Π½ΠΈΡ ΡΠΎΠ±ΠΎΡΠ° PR2, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ WillowGarage (www.willowgarage.com). ΠΡΠΎΠ΅ΠΊΡ PR2 Π½Π°ΡΠ΅Π»Π΅Π½ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ β ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π΄Π»Ρ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ ΡΠΎΠ±ΠΎΡΠΎΡΠ΅Ρ Π½ΠΈΠΊΠΈ.
- ΠΡΠ΄ΠΈΠΎ-Π²ΠΈΠ·ΡΠ°Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΡ Π² ΠΡΠ·Π΅Π΅ Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΡΠΊΡΡΡΡΠ²Π° (Π‘Π°Π½-Π€ΡΠ°Π½ΡΠΈΡΠΊΠΎ).
- ΠΠΎΠ½ΡΡΠΎΠ»Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΌΠΎΠ½Π΅Ρ, ΠΈΠ·Π³ΠΎΡΠ°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΡ Π¦Π΅Π½ΡΡΠΎΠ±Π°Π½ΠΊΠΎΠΌ ΠΠΈΡΠ°Ρ.
- ΠΡΡΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ Π² Π‘ΡΡΠ½ΡΠΎΡΠ΄Π΅.
- ΠΠ°Π½ΠΎΡΠ°ΠΌΡ ΡΠ»ΠΈΡ Π² ΠΊΠ°ΡΡΠ°Ρ Google.
ΠΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π½Π° ΡΠΈΡ. 4.1. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· 16 ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΎΠΊΠΎΠ»ΠΎ 1000 Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ². Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Π° Π½Π° ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ : C, C++, Python, CUDA, Java. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ: MS Windows, Linux, Mac, Android, iOS. ΠΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ Kinect (OpenNI), ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ (TBB) ΠΈ Π΄Ρ.
ΠΡΠΎΠ΅ΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ. ΠΠ°ΠΆΠ΄ΡΡ Π½ΠΎΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ OpenCV ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡΡΡ ΠΈΠ· ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡΡΡ Π½Π° 50 ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ (ΡΠ°Π·Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠ°Π·Π½ΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΡΠ°Π·Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈ Ρ. Π΄.), ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ΅ΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Android-ΠΏΠ»Π°Π½ΡΠ΅ΡΠ°Ρ .
Π ΠΈΡ.
4.1.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ½Π΅ΡΡΠΈ ΠΊ 4 Π³ΡΡΠΏΠΏΠ°ΠΌ (ΡΠ°Π·Π΄Π΅Π»Π°ΠΌ):
- ΠΠΎΠ΄ΡΠ»ΠΈ core, highgui, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ (Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ, ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π», Π»ΠΈΠ½Π΅ΠΉΠ½Π°Ρ Π°Π»Π³Π΅Π±ΡΠ°, Π±ΡΡΡΡΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π€ΡΡΡΠ΅, Π²Π²ΠΎΠ΄/Π²ΡΠ²ΠΎΠ΄ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ, Π²Π²ΠΎΠ΄/Π²ΡΠ²ΠΎΠ΄ Π² ΡΠΎΡΠΌΠ°ΡΠ°Ρ XML, YAML ΠΈ Π΄Ρ.).
- ΠΠΎΠ΄ΡΠ»ΠΈ imgproc, features2d Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ, Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ², ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΠΎΠ±ΡΡ ΡΠΎΡΠ΅ΠΊ ΠΈ ΡΠ΅Π±Π΅Ρ, ΠΊΠΎΠ½ΡΡΡΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΈ Π΄Ρ).
- ΠΠΎΠ΄ΡΠ»ΠΈ video, objdetect, calib3d (ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠ° ΠΊΠ°ΠΌΠ΅ΡΡ, Π°Π½Π°Π»ΠΈΠ· Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅, ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΡΡΡ Π³Π»ΡΠ±ΠΈΠ½Ρ, Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΎΠΏΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΡΠΎΠΊ).
- ΠΠΎΠ΄ΡΠ»Ρ ml, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ (ΠΌΠ΅ΡΠΎΠ΄ Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΡ ΡΠΎΡΠ΅Π΄Π΅ΠΉ, Π½Π°ΠΈΠ²Π½ΡΠΉ Π±Π°ΠΉΠ΅ΡΠΎΠ²ΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, Π΄Π΅ΡΠ΅Π²ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, Π±ΡΡΡΠΈΠ½Π³, Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΡΠΉ Π±ΡΡΡΠΈΠ½Π³ Π΄Π΅ΡΠ΅Π²ΡΠ΅Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ Π»Π΅Ρ, ΠΌΠ°ΡΠΈΠ½Π° ΠΎΠΏΠΎΡΠ½ΡΡ Π²Π΅ΠΊΡΠΎΡΠΎΠ², Π½Π΅ΠΉΡΠΎΠ½Π½ΡΠ΅ ΡΠ΅ΡΠΈ ΠΈ Π΄Ρ.).
ΠΠ±ΡΠ°ΡΠΈΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠ°Π±ΠΎΡΡ Ρ xml-ΡΠ°ΠΉΠ»Π°ΠΌΠΈ. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π² xml-ΡΠ°ΠΉΠ»Π°Ρ , Π° Π·Π°ΡΠ΅ΠΌ ΠΈΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, ΡΡΠΎ ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΏΠΎ ΡΠ°ΡΡΡΠΌ, ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠΌ ΡΠ΅Π»ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ.
ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° OpenCV ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠΎΠ»ΡΠΊΠΎ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΌ Π·ΡΠ΅Π½ΠΈΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π² ΡΠ΅Π»ΠΎΠΌ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ. ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΡΠ΅Π·Π½ΡΡ Π·Π°Π΄Π°Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ ΠΊΠΈΡΠΏΠΈΡΠΈΠΊΠΎΠ² ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ Π½ΠΈΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ΠΎΠ±ΡΠ°Ρ ΡΡ Π΅ΠΌΠ° ΡΠΈΠΏΠΈΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ (ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅ Π²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΏΠ°Π΄Π°ΡΡ ΠΏΠΎΠ΄ ΡΡΡ ΡΡ Π΅ΠΌΡ).
Π ΠΈΡ.
4.2.
ΠΡΠ΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π·Π°Ρ Π²Π°ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (ΠΌΠΎΠ΄ΡΠ»Ρ highgui). ΠΡ ΡΠΈΡΠ°Π΅ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΡΠΈΡΠ°Π΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΠΎ Ρ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΊΠ°ΠΌΠ΅ΡΡ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ».
ΠΠ°Π»Π΅Π΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° (ΠΌΠΎΠ΄ΡΠ»Ρ imgproc), ΡΠ°ΠΊΠ°Ρ, ΠΊΠ°ΠΊ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΡΠΌΠ°, Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΡΠΊΠΎΡΡΠΈ, ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ°, Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π±Π»ΠΈΠΊΠΎΠ², ΡΠ΅Π½Π΅ΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΡΠΈ ΡΠ°Π·Π½ΠΎΠΌ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΠΈ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ. Π ΡΡΠΊΠΎΠΌ ΡΠ²Π΅ΡΠ΅ ΠΊΡΠ°ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π°, Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠΉ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ, Π±ΡΠ΄Π΅Ρ ΡΡΠΊΠΎ-ΠΎΡΠ°Π½ΠΆΠ΅Π²ΠΎΠΉ. Π ΠΏΠ°ΡΠΌΡΡΠ½ΡΡ ΠΏΠΎΠ³ΠΎΠ΄Ρ ΡΠ° ΠΆΠ΅ ΠΌΠ°ΡΠΈΠ½Π° Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΊΡΠ°ΡΠ½ΠΎ-ΡΠΎΠ·ΠΎΠ²ΠΎΠΉ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠΎΠ². ΠΡΠ΅Π΄ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Π΅ ΡΠ΅Π»ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°ΠΏ β Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ (ΠΌΠΎΠ΄ΡΠ»ΠΈ imgproc, features2d). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π·Π°Π΄Π°ΡΠ΅ ΡΠ»Π΅ΠΆΠ΅Π½ΠΈΡ Π·Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠΈΡΠΊ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΎΡΠ΅ΠΊ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ΅, Π·Π° ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π»Π΅Π³ΠΊΠΎ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ; Π΄Π»Ρ Π·Π°Π΄Π°ΡΠΈ Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Ρ. Π΅. ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ) Π»ΠΈΡΠ° β Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Π°.
ΠΠ°Π»Π΅Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΡ Π½Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠΈΠΌΡΡ ΡΠ°ΡΡΠ΅ΠΉ, ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (ΠΌΠΎΠ΄ΡΠ»ΠΈ imgproc, objdetect). ΠΡΠ»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΌΠ΅ΡΠ° Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½Π°, Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½ΠΎΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π²ΡΡΠΈΡΠ°Π½ΠΈΡ ΡΠΎΠ½Π°.
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²Ρ ΡΠ΅ΡΠ°Π΅ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π·Π°Π΄Π°ΡΡ, ΡΠ°ΠΊΡΡ, ΠΊΠ°ΠΊ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² 3d, ΡΠ΅ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ 3d ΡΡΡΡΠΊΡΡΡΡ, Π°Π½Π°Π»ΠΈΠ· ΡΡΡΡΠΊΡΡΡΡ, ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΈ Ρ. ΠΏ. (ΠΌΠΎΠ΄ΡΠ»ΠΈ calib3d, contrib, video, stitching, videostab, ml). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π² Π·Π°Π΄Π°ΡΠ΅ ΡΠΊΠ»Π΅ΠΉΠΊΠΈ ΠΏΠ°Π½ΠΎΡΠ°ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ β ΡΡΠΎ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠ΅ΠΉ ΡΠ°Π·Π½ΡΡ ΠΊΠ°Π΄ΡΠΎΠ², ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ. Π Π·Π°Π΄Π°ΡΠ΅ Π²ΠΈΠ΄Π΅ΠΎΠ½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ ΡΡΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ Ρ. Π΄.
Π ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈΠ½ΡΡΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ (ΠΌΠΎΠ΄ΡΠ»Ρ ml). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Π²ΠΈΠ΄Π΅ΠΎΠ½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ: ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΠΊΠ°Π΄ΡΠ΅ ΠΈΠ»ΠΈ Π½Π΅Ρ. Π Π·Π°Π΄Π°ΡΠ΅ Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° β Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ ΡΠ΅ΠΊΡΡ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π° ΡΠ΅ΠΊΡΡ ΠΈ Ρ. Π΄.
ΠΠΎΡ Π²ΠΊΡΠ°ΡΡΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² OpenCV ΠΈ ΡΡ Π΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ. Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ.
ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π²ΠΈΠ΄Π΅ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ OpenCV
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ:
OpenCV β cΠ°ΠΌΠ°Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ β Π΅Ρ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ
ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π²ΠΈΠ΄Π΅ΠΎΡΠ°ΠΉΠ»ΠΎΠ². ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΡΡ Π² ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°. Π§ΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ OpenCV, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ pip
:
pip3 install opencv-python
FFmpeg β ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΠ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ, ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΠΈ ΠΈ ΡΡΡΠΈΠΌΠΈΠ½Π³Π° Π°ΡΠ΄ΠΈΠΎ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ. ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ FFmpeg Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π²ΠΈΠ΄Π΅ΠΎΡΠ°ΠΉΠ»ΠΎΠ². Π‘ΡΡΠ°Π½ΠΈΡΠ° Π·Π°Π³ΡΡΠ·ΠΊΠΈ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ
Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
import cv2 as cv
import time
import subprocess as sp
import multiprocessing as mp
from os import remove
from xailient import dnn
ΠΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ±
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ
:
- cv2: Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° OpenCV, ΡΡΠΎΠ±Ρ ΡΠΈΡΠ°ΡΡ ΠΈ ΠΏΠΈΡΠ°ΡΡ Π²ΠΈΠ΄Π΅ΠΎΡΠ°ΠΉΠ»Ρ;
- time: ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ ΡΠ°ΡΡΠ΅ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°;
- subprocess: Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π½ΠΎΠ²ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ ΠΊ ΠΈΡ ΠΊΠ°Π½Π°Π»Π°ΠΌ input/output/error ΠΈ Π·Π°Π±ΠΈΡΠ°Π΅ΠΌ ΠΈΡ ΠΊΠΎΠ΄Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°.
- multiprocessing: ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π²Ρ ΠΎΠ΄Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ;
- xailient: Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»ΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ Π»ΡΠ±ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ face_recognition, Π½ΠΎ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ°.
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΠΌΠ΅ΡΠΎΠ΄Π°
ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΠΈΠ΄Π΅ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅. ΠΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ ΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΈΡΠ°Π΅ΠΌ
Π²ΠΈΠ΄Π΅ΠΎΡΠ°ΠΉΠ», ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ°Π΄Ρ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°Π΄ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π½Π°
Π΄ΠΈΡΠΊ.
def process_video():
# Π§ΠΈΡΠ°Π΅ΠΌ ΡΠ°ΠΉΠ» Ρ Π²ΠΈΠ΄Π΅ΠΎ
cap = cv.VideoCapture(file_name)
# ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΡΠΎΡΡ, ΡΠΈΡΠΈΠ½Ρ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ°Π΄ΡΠΎΠ² Π² Π²ΠΈΠ΄Π΅ΠΎ
width, height = (
int(cap.get(cv.CAP_PROP_FRAME_WIDTH)),
int(cap.get(cv.CAP_PROP_FRAME_HEIGHT))
)
fps = int(cap.get(cv.CAP_PROP_FPS))
# ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ΠΊ ΠΈ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ VideoWriter
fourcc = cv.VideoWriter_fourcc('m', 'p', '4', 'v')
out = cv.VideoWriter()
output_file_name = "output_single.mp4"
out.open(output_file_name, fourcc, fps, (width, height), True)
try:
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
im = frame
# ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ Π»ΠΈΡ Π² ΠΊΠ°Π΄ΡΠ΅
_, bboxes = detectum.process_frame(im, THRESHOLD)
# Π¦ΠΈΠΊΠ» ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ (Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΏΡΡΡ, ΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅ΠΌ) ΠΈ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π΅Π»Π΅Π½ΡΡ
ΠΏΠΎΠ»Π΅ΠΉ for i in bboxes:
cv.rectangle(im, (i[0], i[1]), (i[2], i[3]), (0, 255, 0), 3)
# Π ΠΈΡΡΠ΅ΠΌ ΡΠ°ΠΌΠΊΡ
out.write(im)
except:
# ΠΡΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΠΌ ΡΠ΅ΡΡΡΡΡ
cap.release()
out.release()
# ΠΡΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΠΌ ΡΠ΅ΡΡΡΡΡ
cap.release()
out.release()
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΅ΡΠ΅
ΠΎΠ΄Π½Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π²ΠΈΠ΄Π΅ΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡ, ΡΠΈΠΊΡΠΈΡΡΠ΅Ρ Π²ΡΠ΅ΠΌΡ Π½Π°ΡΠ°Π»Π° ΠΈ
ΠΊΠΎΠ½ΡΠ°, Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ Π²ΡΠ΅ΠΌΡ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ
ΠΊΠ°Π΄ΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ.
def single_process():
print("ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π²ΠΈΠ΄Π΅ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°...")
start_time = time.time()
process_video()
end_time = time.time()
total_processing_time = end_time - start_time
print("ΠΡΠ΅ΠΌΡ: {}".format(total_processing_time))
print("FPS : {}".format(frame_count/total_processing_time))
file_name = "input_video.mp4"
output_file_name = "output.mp4"
width, height, frame_count = get_video_frame_details(file_name)
print("ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ°Π΄ΡΠΎΠ² = {}".format(frame_count))
print("Π¨ΠΈΡΠΈΠ½Π° = {}, ΠΠ»ΠΈΠ½Π° = {}".format(width, height))
single_process()
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ Π΄ΡΡΠ³ΡΡ
ΡΡΠ½ΠΊΡΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ:
def process_video_multiprocessing(group_number):
# Π§ΠΈΡΠ°Π΅ΠΌ ΡΠ°ΠΉΠ» Ρ Π²ΠΈΠ΄Π΅ΠΎ
cap = cv.VideoCapture(file_name)
cap.set(cv.CAP_PROP_POS_FRAMES, frame_jump_unit * group_number)
# ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΡΠΎΡΡ, ΡΠΈΡΠΈΠ½Ρ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ°Π΄ΡΠΎΠ² Π² Π²ΠΈΠ΄Π΅ΠΎ
width, height = (
int(cap.get(cv.CAP_PROP_FRAME_WIDTH)),
int(cap.get(cv.CAP_PROP_FRAME_HEIGHT))
)
no_of_frames = int(cap.get(cv.CAP_PROP_FRAME_COUNT))
fps = int(cap.get(cv.CAP_PROP_FPS))
proc_frames = 0
# ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ΠΊ ΠΈ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ VideoWriter
fourcc = cv.VideoWriter_fourcc('m', 'p', '4', 'v')
out = cv.VideoWriter()
output_file_name = "output_multi.mp4"
out.open("output_{}.mp4".format(group_number), fourcc, fps, (width, height), True)
try:
while proc_frames < frame_jump_unit:
ret, frame = cap.read()
if not ret:
break
im = frame
# ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ Π»ΠΈΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ°Π΄ΡΠ΅
_, bboxes = detectum.process_frame(im, THRESHOLD)
# Π¦ΠΈΠΊΠ» ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ (Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΏΡΡΡ, ΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅ΠΌ) ΠΈ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π΅Π»Π΅Π½ΡΡ
ΠΏΠΎΠ»Π΅ΠΉ
for i in bboxes:
cv.rectangle(im, (i[0], i[1]), (i[2], i[3]), (0, 255, 0), 3)
# Π ΠΈΡΡΠ΅ΠΌ ΡΠ°ΠΌΠΊΡ
out.write(im)
proc_frames += 1
except:
# ΠΡΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΠΌ ΡΠ΅ΡΡΡΡΡ
cap.release()
out.release()
# ΠΡΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΠΌ ΡΠ΅ΡΡΡΡΡ
cap.release()
out.release()
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΎΠΏΠΈΡΠ°Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±ΡΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, Π½ΠΎ ΡΠ΅ΠΏΠ΅ΡΡ
ΠΎΠ½Π° Π΄Π΅Π»ΠΈΡΡΡ ΠΏΠΎΡΠΎΠ²Π½Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±ΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ², Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
Π½Π°
ΠΈΡΠΏΠΎΠ»Π½ΡΡΡΠ΅ΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅.
ΠΡΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ 4
ΠΏΡΠΎΡΠ΅ΡΡΠ°, Π° ΠΎΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ°Π΄ΡΠΎΠ² Π² ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠΌ Π²ΠΈΠ΄Π΅ΠΎ ΡΠ°Π²Π½ΠΎ 1000, ΡΠΎ
ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ 250 ΠΊΠ°Π΄ΡΠΎΠ² Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ.
Π ΠΈΡΠΎΠ³Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π²ΡΡ
ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ» Ρ Π²ΠΈΠ΄Π΅ΠΎ. Π§ΡΠΎΠ±Ρ
ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΡΠΈ ΡΠ°ΠΉΠ»ΠΈΠΊΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ffmpeg.
def combine_output_files(num_processes):
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΡ
ΠΎΠ΄Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌ ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ»
list_of_output_files = ["output_{}.mp4".format(i) for i in range(num_processes)]
with open("list_of_output_files.txt", "w") as f:
for t in list_of_output_files:
f.write("file {} \n".format(t))
# ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ffmpeg Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π²ΡΡ
ΠΎΠ΄Π½ΡΡ
Π²ΠΈΠ΄Π΅ΠΎΡΠ°ΠΉΠ»ΠΎΠ²
ffmpeg_cmd = "ffmpeg -y -loglevel error -f concat -safe 0 -i list_of_output_files.txt -vcodec copy " + output_file_name
sp.Popen(ffmpeg_cmd, shell=True).wait()
# Π£Π΄Π°Π»ΡΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ
for f in list_of_output_files:
remove(f)
remove("list_of_output_files.txt")
Π’Π΅ΠΏΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ
Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΠΈΠ΄Π΅ΠΎ, ΡΠ°ΡΡΠ΅ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ
ΠΊΠ°Π΄ΡΠΎΠ², ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΡ
Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ.
def multi_process():
print("ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π²ΠΈΠ΄Π΅ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ {} ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²...".format(num_processes))
start_time = time.time()
# ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π²Ρ
ΠΎΠ΄Π½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ
p = mp.Pool(num_processes)
p.map(process_video_multiprocessing, range(num_processes))
combine_output_files(num_processes)
end_time = time.time()
total_processing_time = end_time - start_time
print("ΠΡΠ΅ΠΌΡ: {}".format(total_processing_time))
print("FPS : {}".format(frame_count/total_processing_time))
file_name = "input.mp4"
output_file_name = "output.mp4"
width, height, frame_count = get_video_frame_details(file_name)
print("ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ°Π΄ΡΠΎΠ² = {}".format(frame_count))
print("Π¨ΠΈΡΠΈΠ½Π°= {}, ΠΡΡΠΎΡΠ° = {}".format(width, height))
num_processes = mp.cpu_count()
print("ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ²: " + str(num_processes))
frame_jump_unit = frame_count// num_processes
multi_process()
ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠ»ΡΡ
Π½Π° Lenovo Yoga 920 Ρ Ubuntu18.04. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² β 8ΡΡ.
ΠΠ· ΡΡΠΎΠ³ΠΎ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°
ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄, ΡΡΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π²ΡΠ΅Ρ
ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Π² 2 ΡΠ°Π·Π°
Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠ°Π΄ΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ. Π§Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² Π½Π° ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΠΈ ΡΠ΅ΠΌ Π±ΡΡΡΡΠ΅Π΅ ΠΏΡΠΎΠΉΠ΄Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ OpenCV Π² Delphi
Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ OpenCV ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΠ»ΠΈΡΡ ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡΡ Π½Π° C ++, C, Python ΠΈ Java, Π²Π΅Π΄Ρ Π΄Π»Ρ ΡΡΠΈΡ ΡΠ·ΡΠΊΠΎΠ² Π΅ΡΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ. Π ΡΡΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°ΡΡ Delphi-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ? ΠΠ° ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Π½Π΅ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Delphi-OpenCV, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΉ ΡΠΎΡΡΠΈΠΉΡΠΊΠΈΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠ±ΡΡΡΠΊΠΈ Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ OpenCV. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ»ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ, Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ OpenCV Π² Delphi.
ΠΠΎ ΡΡΡΠΈ Delphi-OpenCV — ΡΡΠΎ Π½Π°Π±ΠΎΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Π½ΡΡ Π½Π° Delphi + ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π΄Π»Ρ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Delphi Π½Π° ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π΅. ΠΠ° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ°ΡΡΠΈ, ΠΎΠ±ΡΡΡΠΊΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π΄Π»Ρ OpenCV Π²Π΅ΡΡΠΈΠΈ 2.4.11 , ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Delphi 2010 — Delphi 10.1 Berlin . ΠΡΠΎΠ΅ΠΊΡ Delphi-OpenCV Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ, ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠΊΡΡΡΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΊΠΎΠ΄Ρ ΠΈ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° ΡΠ°ΠΉΡΠ°Ρ GitHub ΠΈ SourceForge. Π’Π°ΠΌ ΠΆΠ΅ ΡΠΊΠ°Π·Π°Π½Ρ ΠΊΠΎΡΠ΅Π»ΡΠΊΠΈ Π°Π²ΡΠΎΡΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΈ Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΈΠ»ΠΈ Π²ΡΡΠ°Π·ΠΈΡΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ½ΠΎΡΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Delphi-OpenCV
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, ΡΠΊΠ°ΡΠ°ΠΉΡΠ΅ Π°ΡΡ ΠΈΠ² Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Delphi-OpenCV ΠΎΡΡΡΠ΄Π°. ΠΠ°ΡΠ΅ΠΌ ΠΏΡΠΈΠ³ΠΎΡΠΎΠ²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ OpenCV:
- Π€Π°ΠΉΠ»Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΠΌΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Visual C ++ Π΄Π»Ρ Visual Studio 2013 . ΠΠ°ΠΉΡΠΈ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π² Π°ΡΡ ΠΈΠ²Π΅ Delphi-OpenCV: Π² ΠΏΠ°ΠΏΠΊΠ΅ redist \ VC2013x86 — ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ 32-Π±ΠΈΡΠ½ΠΎΠΉ Windows ΠΈ Π² ΠΏΠ°ΠΏΠΊΠ΅ redist \ VC2013x64 — Π΄Π»Ρ 64-Π±ΠΈΡΠ½ΠΎΠΉ. ΠΠΎΡ ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ: msvcp120.dll, msvcr120.dll, msvcp120d.dll ΠΈ msvcr120d.dll.
- ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ² FFMPEG Π΄Π»Ρ Windows , ΡΠΊΠ°ΡΠ°ΡΡ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π΄Π΅ΡΡ. Π‘ΠΊΠ°ΡΠΈΠ²Π°ΡΡ Π½ΡΠΆΠ½ΠΎ Π²Π΅ΡΡΠΈΡ Shared, Ρ.ΠΊ. Π² Π½Π΅ΠΉ Π΅ΡΡΡ Π½ΡΠΆΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ .dll. ΠΠ· ΡΠΊΠ°ΡΠ°Π½Π½ΠΎΠ³ΠΎ Π°ΡΡ ΠΈΠ²Π° Π½Π°ΠΌ Π½ΡΠΆΠ½Ρ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ .dll ΠΈ ΠΏΠ°ΠΏΠΊΠΈ bin, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ avcodec-57.dll, avdevice-57.dll, avfilter-6.dll, avformat-57.dll ΠΈ Ρ.Π΄.
- ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° OpenCV , ΡΠΊΠ°ΡΠ°ΡΡ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π΄Π΅ΡΡ. ΠΠΎΡΠ»Π΅ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π°ΡΡ ΠΈΠ²Π° Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ .dll ΡΠ°ΠΉΠ»Ρ ΠΈΠ· ΠΏΠ°ΠΏΠΎΠΊ \ build \ x64 \ vc12 \ bin (Π·Π΄Π΅ΡΡ 64-Π±ΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ) ΠΈ \ build \ x86 \ vc12 \ bin (Π·Π΄Π΅ΡΡ 32-Π±ΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ), Π° Π΅ΡΠ»ΠΈ ΡΠΎΡΠ½Π΅Π΅, ΡΠΎ ΡΠ°ΠΉΠ»Ρ Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ , ΠΎΠΊΠ°Π½ΡΠΈΠ²Π° ΡΠ²ΠΎΠΈΡ Π½Π° 2411.dll ΠΈΠ»ΠΈ 2411d.dll.
- ΠΠ΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌ (FFMPEG) ΡΡΠ΅Π±ΡΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ SDL 2.0 ΠΈ SDL 1.2 (ΡΠ°ΠΉΠ»Ρ SDL.dll ΠΈ SDL2.dll), ΡΠΊΠ°ΡΠ°ΡΡ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π΄Π΅ΡΡ.
Π‘ΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π²ΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ:
- ΠΡΠ»ΠΈ Ρ Π²Π°Ρ 32-Π±ΠΈΡΠ½Π°Ρ Windows, ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ 32-Π±ΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΏΠ°ΠΏΠΊΡ C: \ Windows \ System32 \.
- ΠΡΠ»ΠΈ Ρ Π²Π°Ρ 64-Π±ΠΈΡΠ½Π°Ρ Windows, ΡΠΎ:
- ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ 64-Π±ΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΏΠ°ΠΏΠΊΡ C: \ Windows \ System32 \, Π΅ΡΠ»ΠΈ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ 64-Π±ΠΈΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ;
- ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ 32-Π±ΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΏΠ°ΠΏΠΊΡ C: \ Windows \ SysWOW64 \, Π΅ΡΠ»ΠΈ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ 32-Π±ΠΈΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π€Π°ΠΉΠ»Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΠΌΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Visual C ++ Π΄Π»Ρ Visual Studio 2013 ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°ΡΠ°ΡΡ Π·Π΄Π΅ΡΡ.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π½Π° ΠΌΠ΅ΡΡΠ°Ρ , ΡΠ°ΡΠΏΠ°ΠΊΡΠΉΡΠ΅ Π°ΡΡ ΠΈΠ² Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Delphi-OpenCV Π² ΡΠ΄ΠΎΠ±Π½ΠΎΠ΅ Π΄Π»Ρ Π²Π°Ρ ΠΌΠ΅ΡΡΠΎ (Ρ ΠΌΠ΅Π½Ρ ΡΡΠΎ C: \ Projects \ OpenCV), ΠΏΡΠΎΠΏΠΈΡΠΈΡΠ΅ ΠΏΡΡΠΈ ΠΊ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΠΌ ΠΏΠ°ΠΏΠΊΠ°ΠΌ Π² ΡΡΠ΅Π΄Π΅ Delphi. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π·Π°ΠΊΡΠΎΠΉΡΠ΅ Π²ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Ρ Π²Π°Ρ ΠΎΡΠΊΡΡΡΡ (ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ Β«Π€Π°ΠΉΠ» -> ΠΠ°ΠΊΡΡΡΡ Π²ΡΠ΅Β») ΠΈ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ Π½Π°ΡΡΡΠΎΠ΅ΠΊ (ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ Β«ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ -> ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ.. Β»). Π Π΄ΠΈΠ°Π»ΠΎΠ³Π΅ ΠΎΡΠΊΡΡΡΠΈΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΠΏΡΡΠ΅ΠΉ (Β«ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ΅Π΄Ρ -> ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Delphi -> ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° -> ΠΡΡΡ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅:Β») ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΡΠΈ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΠΏΠ°ΠΏΠΊΠ°ΠΌ:
<ΠΠΠ ΠΠΠΠΠ_ΠΠ ΠΠΠΠ’> \ ΡΠ΅ΡΡΡΡ \ facedetectxml
Π³Π΄Π΅
ΠΠ°ΡΠ΅ΠΌ ΠΎΡΠΊΡΠΎΠΉΡΠ΅, ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ (ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π² ΡΠΏΠΈΡΠΊΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ):
<ΠΠΠ ΠΠΠΠΠ_ΠΠ ΠΠΠΠ’> \ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ \ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ \ DelphiXX \ dclFFMSourceXXX.dpk
Π³Π΄Π΅
C: \ Projects \ OpenCV \ source \ component \ Delphi 10 Seattle \ OpenCV230.dpk
C: \ Projects \ OpenCV \ source \ component \ Delphi 10 Seattle \ dclCommonOpenCV230.dpk
C: \ Projects \ OpenCV \ source \ component \ Delphi 10 Seattle \ dclVCLOpenCV230.dpk
C: \ Projects \ OpenCV \ source \ component \ Delphi 10 Π‘ΠΈΡΡΠ» \ dclFMXOpenCV230.dpk
C: \ Projects \ OpenCV \ source \ component \ Delphi 10 Seattle \ dclFFMSource230.dpk
ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½Π΅ ΠΌΠ΅Π½ΡΠΉΡΠ΅.
ΠΡΠΈΠΌΠ΅ΡΡ Delphi-OpenCV
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Delphi-OpenCV ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π² Π°ΡΡ ΠΈΠ²Π΅.ΠΡΡΠ°ΡΠΈ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅. ΠΠΎΡ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π·Π΄Π΅ΡΡ Π΅ΡΡΡ:
1. LibDemo — Π³ΡΡΠΏΠΏΠ° ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡ. ΠΡΡΡ ΠΊ Π³ΡΡΠΏΠΏΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² —
2. MultiDemo — Π³ΡΡΠΏΠΏΠ° ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΠΈΠ΄Π΅ΠΎ. ΠΠ°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π·Π΄Π΅ΡΡ:
3. FFMPEG — ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ² FFMPEG. ΠΡΡΠΏΠΏΠ° ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π·Π΄Π΅ΡΡ:
4. ComponentsDemo — Π³ΡΡΠΏΠΏΠ° ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΠ°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π·Π΄Π΅ΡΡ:
Π Π²ΠΎΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ IP-ΠΊΠ°ΠΌΠ΅Ρ Π΄Π»Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ²:
ΠΠ°ΠΉΠΊΠ°Π», ΠΠΈΡΡΠ²ΡΠ½ΠΊΠ° — rtmp: // bm.isc.irk.ru/v2/v2
ΠΠΊΠ°ΡΠ΅ΡΠΈΠ½Π±ΡΡΠ³, ΠΠ»ΠΎΡΠΈΠ½ΠΊΠ° — rtsp: //80.78.116.125: 1935 / rtplive / plot_hd.stream
ΠΠΊΠ°ΡΠ΅ΡΠΈΠ½Π±ΡΡΠ³, ΠΠΎΠΎΠΏΠ°ΡΠΊ, ΡΠ»ΠΎΠ½ΠΈΡ
Π° ΠΠ°ΡΠ° — rtmp: //80.78.116.125: 1935 / rtplive / zoo_ek_sd .stream
ΠΠΊΠ°ΡΠ΅ΡΠΈΠ½Π±ΡΡΠ³, ΠΠ»ΠΎΡΠ°Π΄Ρ 1905 Π³. — rtmp: //80.78.116.125: 1935 / rtplive / 5goda_sd.stream
Π‘ΠΎΠ»ΠΈΠΊΠ°ΠΌΡΠΊ, Π‘ΠΎΠ±ΠΎΡΠ½Π°Ρ ΠΏΠ»ΠΎΡΠ°Π΄Ρ — rtmp: //80.78.116.125: 1935 / rtplive / solikamsk_hd.stream
ΠΡΠΎΠ³
ΠΠ΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΅ΡΡ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ Π² Delphi.ΠΡΠΈΠΌΠ΅ΡΠΎΠ² Π·Π΄Π΅ΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π½Π° ΡΠ°ΠΉΡΠ΅ OpenCV Π·Π΄Π΅ΡΡ. Π Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΏΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ, ΡΠΎ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ.
.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ OpenCV Π² Delphi / Π₯Π°Π±Ρ
Π’Π°ΠΊ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ, ΡΡΠΎ Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Delphi Π² ΡΠ°Π±ΠΎΡΠ΅ (ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΎΡΠΊΡΡΡΡΠ΅ ΠΈ Π·Π°ΠΊΡΡΡΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ) ΠΈ Π²ΠΎΡ ΠΌΠ½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΠΎΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΎΡΠΊΡΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ OpenCV. Π§ΡΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°ΡΡ, Π²Π΅Π΄Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ OpenCV ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Delphi Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π° ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΡΡΡ Π½Π° C ΡΠ°Π΄ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄ΠΎΠ»Π³ΠΎ.
ΠΠΎ Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎβ¦
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°Π² Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅, Ρ Π½Π°ΡΠ΅Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenCV Π² Delphi.
ΠΠ΅ΡΠ²ΡΠΉ, Π²ΡΠΎΡΠΎΠΉ, ΡΡΠ΅ΡΠΈΠΉ ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ²Π΅ΠΆΠΈΠΉ ΠΈ ΡΠ΄Π°ΡΠ½ΡΠΉ — ΡΠ΅ΡΠ²Π΅ΡΡΡΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΈ Π²Π·ΡΠ» Π·Π° ΠΎΡΠ½ΠΎΠ²Ρ.
ΠΡΠΎΠ΅ΠΊΡ Π½Π° github ΠΌΠ½Π΅Π°Π»ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ OpenCV, Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π½Π° Delphi, Π½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡ Π·Π°Π±ΡΠΎΡΠ΅Π½ Π°Π²ΡΠΎΡΠΎΠΌ ΠΈ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π²Π·ΡΡΡΡΡ Π·Π° ΡΠ²ΠΎΠΉ.
ΠΡΠ΅ ΡΠ΅ΠΊΡΡΠΈΠ΅ Π½Π°ΡΠ°Π±ΠΎΡΠΊΠΈ Ρ Π²ΡΠ»ΠΎΠΆΠΈΠ» Π½Π° code.google.com/p/opencv-delphi-new
Π Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ΄Π΅Π»Π°Π½ΠΎ:
1. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° RAD Studio XE3.
2. ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: cvFlip, cvClearMemStorage, cvCreateChildMemStorage, cvRectangle, cvRetrieveFrame, cvIntegral, cvGetPerspectiveTransform, cvWarpPerspective, cvCreateMat, cv2DRffabjects, cv2DRffabjects, cv2DRffabjects, cv2DRffovers.
3. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ 6 Π½ΠΎΠ²ΡΡ
ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²:
.
FaceDetect — ΠΡΠΈΠΌΠ΅Ρ Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»ΠΈΡΠ° Π² Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡΠΎΠΊΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π₯Π°ΡΠ°.
FindContours — ΠΠ°Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
Integral — ΠΠ½ΡΠ΅Π³ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
WarpAffine — Π’ΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ — Π°ΡΡΠΈΠ½Π½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ (ΠΠΎΠ²ΠΎΡΠΎΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ ΡΠ³ΠΎΠ»).
WrapPrespective — Π’ΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ — Π³ΠΎΠΌΠΎΠ³ΡΠ°ΡΠΈΡ (ΠΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½Π°Ρ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡ).
MatchShapes — ΠΠΎΠΈΡΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ (Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΏΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΌ ΠΈΡ
ΠΊΠΎΠ½ΡΡΡΠΎΠ²).
Π Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ Ρ ΠΏΠΎΡΡΠ°ΡΠ°Π»ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΠΏΠΈΡΠ°ΡΡ Π²ΡΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°.
ΠΡΠ»ΠΈ ΠΊΠΎΠΌΡ-ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° ΡΠ΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenCV Π² Delphi, ΡΠΎ ΠΏΠΈΡΠΈΡΠ΅ ΠΌΠ½Π΅ Π½Π° ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΡ ΠΏΠΎΡΡΡ ΠΈΠ»ΠΈ ΠΎΡΡΠ°Π²Π»ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΡΠ»ΠΈ ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenCV Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°, ΡΠΎ ΠΌΠΎΠ³Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ°ΡΠ΅ΠΉ, ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΏΠΈΡΠΈΡΠ΅, ΠΊΠ°ΠΊΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenCV ΠΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ.
.
1. OpenCV ΡΠ°Π³ Π·Π° ΡΠ°Π³ΠΎΠΌ. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. / ΠΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ΅ Π·ΡΠ΅Π½ΠΈΠ΅ / RoboCraft. Π ΠΎΠ±ΠΎΡΡ? ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ!
ΠΠ³Π»Π°Π²Π»Π΅Π½ΠΈΠ΅
1. OpenCV ΡΠ°Π³ Π·Π° ΡΠ°Π³ΠΎΠΌ. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.
ΠΡΠΎ OpenCV (Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ) Π±ΡΠ»ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π·Π΄Π΅ΡΡ.
ΠΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎ 1-ΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ°Π·Π°ΡΠ°Π±Π°ΡΡΠ²Π°Π»Π°ΡΡ Π² Π¦Π΅Π½ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Intel (ΠΏΡΠΈΡΡΠΌ, ΡΠΎΡΡΠΈΠΉΡΠΊΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π² ΠΠΈΠΆΠ½Π΅ΠΌ ΠΠΎΠ²Π³ΠΎΡΠΎΠ΄Π΅).
OpenCV Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° ΡΠ·ΡΠΊΠ΅ ΡΡΠΎΠ²Π½Ρ (C / C ++) ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ: ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠΈ ΠΊΠ°ΠΌΠ΅ΡΡ ΠΏΠΎ ΡΡΠ°Π»ΠΎΠ½Ρ, ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΎΡΠΌΡ, Π°Π½Π°Π»ΠΈΠ· ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ ΡΠ»Π΅ΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, 3D-ΡΠ΅ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ, ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΠΆΠ΅ΡΡΠΎΠ² ΠΈ Ρ.Π΄.
ΠΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π° Π·Π° ΡΡΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΠΎΡΠΊΡΡΡΠΎΡΡΠΈ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π² ΡΡΠ΅Π±Π½ΡΡ , ΡΠ°ΠΊ ΠΈ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ ΡΠ΅Π»ΡΡ .
Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, OpenCV — ΡΡΠΎ Π½Π°Π±ΠΎΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ , ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°ΠΌΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
cxcore — ΡΠ΄ΡΠΎ ββ
* ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ:
— Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠΌΠΈ ΡΠΈΡΠ»ΠΎΠ²ΡΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ
— ΠΌΠ°ΡΡΠΈΡΠ½Π°Ρ Π°Π»Π³Π΅Π±ΡΠ°, ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Ρ-ΡΠΈΠΈ, Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ
ΡΠΈΡΠ΅Π»
— ΠΠ°ΠΏΠΈΡΡ / Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ
Π² / ΠΈΠ· XML
— Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ 2D Π³ΡΠ°ΡΠΈΠΊΠΈ
CV — ΠΌΠΎΠ΄ΡΠ»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ
— Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ (ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ, Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠΎΠ²ΡΡ
ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈ Ρ.Π΄.)
— Π°Π½Π°Π»ΠΈΠ· ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (Π²ΡΠ±ΠΎΡ ΠΎΡΠ»ΠΈΡΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ², ΠΌΠΎΡΡΠΎΠ»ΠΎΠ³ΠΈΡ, ΠΏΠΎΠΈΡΠΊ ΠΊΠΎΠ½ΡΡΡΠΎΠ², Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ)
— Π°Π½Π°Π»ΠΈΠ· Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ, ΡΠ»Π΅ΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ
— ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ Π»ΠΈΡ
— ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠ° ΠΊΠ°ΠΌΠ΅ΡΡ, ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ
Highgui — ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° / Π²ΡΠ²ΠΎΠ΄Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ, ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
— Π·Π°Ρ
Π²Π°Ρ Π²ΠΈΠ΄Π΅ΠΎ Ρ ΠΊΠ°ΠΌΠ΅Ρ ΠΈ ΠΈΠ· Π²ΠΈΠ΄Π΅ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΡΠ΅Π½ΠΈΠ΅ / Π·Π°ΠΏΠΈΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ.
— ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° (Π²ΡΠ΅ Π΄Π΅ΠΌΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ HighGUI)
Cvaux — ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
— ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ². Π·ΡΠ΅Π½ΠΈΠ΅: ΡΡΠ΅ΡΠ΅ΠΎ ΠΊΠ°Π»ΠΈΠ±ΡΠ°ΡΠΈΡ, ΡΠ°ΠΌΠΎ ΠΊΠ°Π»ΠΈΠ±ΡΠ°ΡΠΈΡ
— ΠΏΠΎΠΈΡΠΊ ΡΡΠ΅ΡΠ΅ΠΎ-ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ, ΠΊΠ»ΠΈΠΊΠΈ Π² Π³ΡΠ°ΡΠ°Ρ
— Π½Π°Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ΅ΡΡ Π»ΠΈΡΠ°
CvCam — Π·Π°Ρ
Π²Π°Ρ Π²ΠΈΠ΄Π΅ΠΎ
— ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Ρ
Π²Π°ΡΠΈΡΡ Π²ΠΈΠ΄Π΅ΠΎ Ρ ΡΠΈΡΡΠΎΠ²ΡΡ
Π²ΠΈΠ΄Π΅ΠΎ-ΠΊΠ°ΠΌΠ΅Ρ ( ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ
Π²Π΅ΡΡΠΈΠΉΡ
ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ )
Π’Π΅ΠΊΡΡΠ°Ρ (Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΡΠ°Π²ΠΊΠΈ ΡΡΠ°ΡΡΠΈ) ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ 2.4.1.
Π‘ΠΊΠ°ΡΠ°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π΄Π΅ΡΡ:
http://sourceforge.net/projects/opencvlibrary/
Π ΡΡΡΡΠΊΡΡΡΠ° Π²Π΅ΡΡΠΈΠΈ 2.2 Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ΅ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° — ΡΠ΅ΠΏΠ΅ΡΡ Π²ΠΌΠ΅ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΈΡ
ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ (cxcore, Cvaux, Highgui, Cvaux) Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ OpenCV ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠ°Π½Π°Π»ΡΠ½ΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
opencv_core — ΡΠ΄ΡΠΎ: Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ, Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ (ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ
ΡΠΈΡΠ΅Π», DFT, DCT, Π²Π²ΠΎΠ΄ / Π²ΡΠ²ΠΎΠ΄ Π² XML ΠΈ Ρ.ΠΏ.)
opencv_imgproc — ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (ΡΠΈΠ»ΡΡΡΡ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Ρ. Π΄.).
opencv_highgui — ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π·Π°Π³ΡΡΠ·ΠΊΠ° / ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ.
opencv_ml — ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ (SVM, Π΄Π΅ΡΠ΅Π²ΡΡ ΠΏΡΠΈΠ½ΡΡΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΈ Ρ. Π.).
opencv_features2d — ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ (SURF).
opencv_video — Π°Π½Π°Π»ΠΈΠ· Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (ΠΎΠΏΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΡΠΎΠΊ, ΡΠ°Π±Π»ΠΎΠ½Ρ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ, ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ½Π°).
opencv_objdetect — Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ (Π²Π΅ΠΉΠ²Π»Π΅ΡΡ Π₯Π°Π°ΡΠ°, HOG ΠΈ Ρ.Π΄.).
opencv_calib3d — ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠ° ΠΊΠ°ΠΌΠ΅ΡΡ, ΠΏΠΎΠΈΡΠΊ ΡΡΠ΅ΡΠ΅ΠΎ-ΡΠΎΠΎΡΠ²Π΅ΡΡΡΡΠ²ΠΈΡ ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠ΅Ρ
ΠΌΠ΅ΡΠ½ΡΡ
Π΄Π°Π½Π½ΡΡ
.
opencv_flann — Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΡ
ΡΠΎΡΠ΅Π΄Π΅ΠΉ (FLANN).
opencv_contrib — ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄, Π΅ΡΠ΅ Π½Π΅ Π³ΠΎΡΠΎΠ²ΡΠΉ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ.
opencv_legacy — ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΉ ΠΊΠΎΠ΄, ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π½ΡΠΉ ΡΠ°Π΄ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ.
opencv_gpu — ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ OpenCV Π·Π° ΡΡΠ΅Ρ CUDA (NVidia).
Π§ΠΈΡΠ°ΡΡ Π΄Π°Π»Π΅Π΅: 2.OpenCV ΡΠ°Π³ Π·Π° ΡΠ°Π³ΠΎΠΌ. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°.
ΠΠ½ΠΈΠ³Π° ΠΏΡΠΎ OpenCV:
ΠΡΡΠΈ ΠΡΠ°Π΄ΡΠΊΠΈ, ΠΠ΄ΡΠΈΠ°Π½ ΠΠ΅Π»Π΅Ρ Β«ΠΠ·ΡΡΠ΅Π½ΠΈΠ΅ OpenCV. ΠΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ΅ Π·ΡΠ΅Π½ΠΈΠ΅ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ OpenCV. Β»
Π‘ΡΡΠ»ΠΊΠΈ
ru.wikipedia.org/wiki/OpenCV
opencv.org
docs.opencv.org
www.compvision.ru/forum/index.php?showforum=4
ΠΠ²ΡΠΎΡ: ΠΠ»Π°Π΄ΠΈΠΌΠΈΡ ( noonv ), 2010-2011
ΠΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΠΎ Π΄Π»Ρ www.robocraft.ru
ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ΅ΡΡΡΡΡ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ
Π±Π΅Π· ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π°Π²ΡΠΎΡΠ° Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Ρ.
.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ OpenCV Π² Delphi
Π’Π°ΠΊ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ, ΡΡΠΎ Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Delphi Π² ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ (ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΡΠΊΡΡΡΡΠ΅ ΠΈ Π·Π°ΠΊΡΡΡΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ) Π’Π°ΠΊ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ, ΡΡΠΎ ΠΌΠ½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΠΎΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΎΡΠΊΡΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ OpenCV. Π§ΡΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°ΡΡ, Π²Π΅Π΄Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ OpenCV ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Delphi Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π° ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΡΡΡ Π½Π° C ΡΠ°Π΄ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄ΠΎΠ»Π³ΠΎ.
ΠΠΎ Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎβ¦
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°Π² Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅, Ρ Π½Π°ΡΠ΅Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenCV Π² Delphi.
ΠΠ΅ΡΠ²ΡΠΉ, Π²ΡΠΎΡΠΎΠΉ, ΡΡΠ΅ΡΠΈΠΉ ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ²Π΅ΠΆΠΈΠΉ ΠΈ ΡΠ΄Π°ΡΠ½ΡΠΉ — ΡΠ΅ΡΠ²Π΅ΡΡΡΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΈ Π²Π·ΡΠ» Π·Π° ΠΎΡΠ½ΠΎΠ²Ρ.
ΠΡΠΎΠ΅ΠΊΡ Π½Π° github ΠΌΠ½Π΅Π°Π»ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ OpenCV, Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π½Π° Delphi, Π½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡ Π·Π°Π±ΡΠΎΡΠ΅Π½ Π°Π²ΡΠΎΡΠΎΠΌ ΠΈ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π²Π·ΡΡΡΡΡ Π·Π° ΡΠ²ΠΎΠΉ.
ΠΡΠ΅ ΡΠ΅ΠΊΡΡΠΈΠ΅ Π½Π°ΡΠ°Π±ΠΎΡΠΊΠΈ Ρ Π²ΡΠ»ΠΎΠΆΠΈΠ» Π½Π° code.google.com/p/opencv-delphi-new/
Π Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ΄Π΅Π»Π°Π½ΠΎ:
1. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° RAD Studio XE3.
2. ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: cvFlip, cvClearMemStorage, cvCreateChildMemStorage, cvRectangle, cvRetrieveFrame, cvIntegral, cvGetPerspectiveTransform, cvWarpPerspective, cvCreateMat, cvWarpPerspective, cvCreateMat, cv2
3. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ 6 Π½ΠΎΠ²ΡΡ
ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²:
FaceDetect — ΠΡΠΈΠΌΠ΅Ρ Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»ΠΈΡΠ° Π² Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡΠΎΠΊΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π₯Π°ΡΠ°.
FindContours — ΠΠ°Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
Integral — ΠΠ½ΡΠ΅Π³ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
WarpAffine — Π’ΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ — Π°ΡΡΠΈΠ½Π½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ (ΠΠΎΠ²ΠΎΡΠΎΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ ΡΠ³ΠΎΠ»).
WrapPrespective — Π’ΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ — Π³ΠΎΠΌΠΎΠ³ΡΠ°ΡΠΈΡ (ΠΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½Π°Ρ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡ).
MatchShapes — ΠΠΎΠΈΡΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ (Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΏΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΌ ΠΈΡ
ΠΊΠΎΠ½ΡΡΡΠΎΠ²).
Π Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ Ρ ΠΏΠΎΡΡΠ°ΡΠ°Π»ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΠΏΠΈΡΠ°ΡΡ Π²ΡΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°.
ΠΡΠ»ΠΈ ΠΊΠΎΠΌΡ-ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° ΡΠ΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenCV Π² Delphi, ΡΠΎ ΠΏΠΈΡΠΈΡΠ΅ ΠΌΠ½Π΅ Π½Π° ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΡ ΠΏΠΎΡΡΡ ΠΈΠ»ΠΈ ΠΎΡΡΠ°Π²Π»ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΡΠ»ΠΈ ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenCV Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°, ΡΠΎ ΠΌΠΎΠ³Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ°ΡΠ΅ΠΉ, ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΏΠΈΡΠΈΡΠ΅, ΠΊΠ°ΠΊΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenCV ΠΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ.
ΠΠ²ΡΠΎΡ: Sleuthhound
ΠΡΡΠΎΡΠ½ΠΈΠΊ
.