Skip to content

vihuhol/practice1-devtools

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° 1. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния

Build Status

Π¦Π΅Π»ΠΈ

ЦСль Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ - Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ простых Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ², Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° сглаТивания посрСдством вычислСния срСднСго ΠΏΠΎ окрСстности, Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ ядром, ΠΌΠ΅Π΄ΠΈΠ°Π½Π½ΠΎΠ³ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°, Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° БобСля. Π’ Π·Π°Π΄Π°Ρ‡Π΅ прСдполагаСтся, Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Π½Π° двумСрная ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° с элСмСнтами Ρ‚ΠΈΠΏΠ° unsigned char. Π’Π°ΠΊΠΆΠ΅ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² имССтся Ρ€Π°Π·ΠΌΠ΅Ρ€ ядра, Π»ΠΈΠ±ΠΎ само ядро Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для вычислСния Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ свСртки. По сущСству ядро Ρ‚Π°ΠΊΠΆΠ΅ являСтся Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ прСдставляСт собой инфраструктуру для провСдСния ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΏΠΎ освоСнию ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ:

  • БистСма контроля вСрсий Git.
  • Google Test Framework.
  • Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° CMake для сборки исходных ΠΊΠΎΠ΄ΠΎΠ².

Π—Π°Π΄Π°Ρ‡ΠΈ

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ

  1. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ сглаТивания посрСдством вычислСния срСднСго ΠΏΠΎ окрСстности. Π“Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ посрСдством Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ отобраТСния пиксСлСй (gfedcb|abcdefgh|gfedcba).
  2. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ ядром. Π“Ρ€Π°Π½ΠΈΡ†Π° Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π° Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ значСниями.
  3. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠ΅Π΄ΠΈΠ°Π½Π½ΠΎΠ³ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°. ΠŸΡ€ΠΈ вычислСнии ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пиксСли Π²Π½ΡƒΡ‚Ρ€ΠΈ изобраТСния.
  4. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ БобСля. Π“Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ посрСдством Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ отобраТСния пиксСлСй (gfedcb|abcdefgh|gfedcba).

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ

  1. Π Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ класса ΠΌΠ°Ρ‚Ρ€ΠΈΡ† ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ опСрациями ΠΈ тСстами ΠΊ Π½ΠΈΠΌ:
    1. ВранспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.
    2. Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† (Π² Π²ΠΈΠ΄Π΅ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ).
    3. ΠŸΠΎΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ слоТСния ΠΈ вычитания (Π² Π²ΠΈΠ΄Π΅ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ).
    4. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ фиксированной константой, инициализация Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, инициализация диагональной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ с фиксированной константой.
    5. ВычислСниС Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π½Ρ‚Π°.
  2. Π Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠΌ БобСля ΠΈ морфологичСскими опСрациями эрозии ΠΈ Π΄ΠΈΠ»Π°Ρ‚Π°Ρ†ΠΈΠΈ.

ΠžΠ±Ρ‰Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий

  1. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΊ upstream-рСпозитория.
  2. ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ origin-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΊ сСбС Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ (Ρ€Π°Π·Π΄Π΅Π» ΠžΠ±Ρ‰ΠΈΠ΅ инструкции ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Git).
  3. Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ, запустив тСсты ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ (Ρ€Π°Π·Π΄Π΅Π» Π‘Π±ΠΎΡ€ΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CMake ΠΈ MS VS).
  4. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ для размСщСния Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² (Ρ€Π°Π·Π΄Π΅Π» ΠžΠ±Ρ‰ΠΈΠ΅ инструкции ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Git).
  5. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнного наслСдника FiltersSurname ΠΎΡ‚ абстрактного класса Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ².
  6. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ всС чисто Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса - ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ, пСрСчислСнныС Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ.
  7. ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° слСдуСт ΠΏΠ΅Ρ€Π΅ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ тСстов. ИзмСнСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ постоянно Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, выкладывая Π² Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Π½Π° сСрвСр (Ρ€Π°Π·Π΄Π΅Π» ΠžΠ±Ρ‰ΠΈΠ΅ инструкции ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Git).
  8. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Pull Request Π² upstream-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.
  9. Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π·Π°Π΄Π°Ρ‡ списка Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ. НСобходимо ΠΏΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‡Π° Π½Π΅ Π±Ρ‹Π»Π° Π²Ρ‹Π±Ρ€Π°Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ участниками ΡˆΠΊΠΎΠ»Ρ‹. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, Π² основной Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚ пСрвая ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ готовая рСализация.

ΠžΠ±Ρ‰Π°Ρ структура ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

  • 3rdparty - Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Google Test.
  • include - дирСктория для размСщСния Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².
  • samples - дирСктория для размСщСния Π΄Π΅ΠΌΠΎ-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
  • src - дирСктория с исходными ΠΊΠΎΠ΄Π°ΠΌΠΈ.
  • test - дирСктория с тСстами.
  • .gitignore - ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Git.
  • .travis.yml - ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» для систСмы автоматичСского тСстирования Travis-CI.
  • CMakeLists.txt - ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Ρ„Π°ΠΉΠ» для сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CMake.
  • README.md - информация ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ сСйчас Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅.

Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ содСрТатся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ:

  • ΠžΠ±Ρ‰ΠΈΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ matrix (./include/matrix.hpp, ./src/matrix.cpp), содСрТащий ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ класса ΠΌΠ°Ρ‚Ρ€ΠΈΡ†. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ рСдактируСтся ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ².
  • ΠœΠΎΠ΄ΡƒΠ»ΡŒ filters( ./include/filters.hpp, ./src/filters_opencv.cpp, ./src/filters_factory.cpp), содСрТащий объявлСниС абстрактного класса Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² (filters.hpp) ΠΈ Π΅Π³ΠΎ наслСдника, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ пСрСчислСнныС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ срСдствами Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ OpenCV (filters_opencv.cpp), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ создания ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² (filters_factory.cpp).
  • ВСсты для класса ΠΌΠ°Ρ‚Ρ€ΠΈΡ† ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² (matrix_test.cpp, filters_test.cpp).
  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° (matrix_sample.cpp).

ΠžΠ±Ρ‰ΠΈΠ΅ инструкции ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Git

Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ описана типичная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ. Π”Π°Π»Π΅Π΅ для опрСдСлСнности ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ practice1-devtools.

  1. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ Π½Π° github.com, Ссли Ρ‚Π°ΠΊΠΎΠΉ отсутствуСт. Для опрСдСлСнности ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ github-account.

  2. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ fork рСпозитория https://github.com/Itseez-NNSU-SummerSchool2015/practice1-devtools (Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Git upstream-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ) ΠΊ сСбС Π² Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ github-account. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ создана копия рСпозитория с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ https://github.com/github-account/practice1-devtools (origin-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ).

  3. ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ origin Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΊ сСбС Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, воспользовавшись ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

$ git clone https://github.com/github-account/practice1-devtools
  1. ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ practice1-devtools:
$ cd ./practice1-devtools
  1. ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ адрСс upstream-рСпозитория (потрСбуСтся ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ локальной вСрсии рСпозитория):
$ git remote add upstream https://github.com/Itseez-NNSU-SummerSchool2015/practice1-devtools
  1. ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΈΠ· ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ Git:
$ git config --global user.name "github-account"

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Ссли Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ размСщСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π° сСрвСр потрСбуСтся Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ваш gihub-account (появится сообщСниС, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π½ΠΈΠΆΠ΅).

warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global push.default simple

When push.default is set to 'matching', git will push local branches
to the remote branches that already exist with the same name.

In Git 2.0, Git will default to the more conservative 'simple'
behavior, which only pushes the current branch to the corresponding
remote branch that 'git pull' uses to update the current branch.

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

Username for 'https://github.com': github-account
Password for 'https://github-account@github.com':

Когда сдСлан Ρ„ΠΎΡ€ΠΊ рСпозитория Ρƒ вас создаСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ СдинствСнная Π²Π΅Ρ‚ΠΊΠ° master. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ нСзависимых Π·Π°Π΄Π°Ρ‡ слСдуСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ. Π”Π°Π»Π΅Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ основныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для управлСния Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Π΅Ρ‚ΠΊΠΈ filter-implementation.

  1. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Π²Π΅Ρ‚ΠΎΠΊ:
$ git branch [-v]
# [-v] - список с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ послСдних ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ…
  1. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ:
$ git branch filter-implementation
  1. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ filter-implementation ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Π½Π΅Π΅:
$ git checkout [-b] filter-implementation
# [-b] - созданиС ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π² Π²Π΅Ρ‚ΠΊΡƒ <branch_name>
  1. Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ Π² локальном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ:
$ git branch -d <branch_name>
  1. Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ Π½Π° сСрвСрС:
$ git push [remotename] :[branch]
# [remotename] - имя ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория. Если ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΉ
#     инструкции, Ρ‚ΠΎ origin - Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ github-account, upstream -
#     Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Itseez-NNSU-SummerSchool2015/practice1-devtools

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² Π²Π΅Ρ‚ΠΊΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ измСнСниями. Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ основных ΠΊΠΎΠΌΠ°Π½Π΄ Π² ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ являСтся filter-implementation.

  1. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:
$ git status
  1. ΠŸΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ рСпозитория (Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ послС выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ commit):
$ git add [<file_name>]
# <file_name> - Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° для добавлСния Π² commit
#     Ссли вмСсто ΠΈΠΌΠ΅Π½ΠΈ ΡƒΠΊΠ°Π·Π°Π½ символ *, Ρ‚ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ всС Π½ΠΎΠ²Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹,
#     Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ с масками, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ Π² .gitignore
  1. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ измСнСния Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ локального рСпозитория:
$ git commit [-m "<message_to_commit>"] [-a]
# [-a] - автоматичСски добавляСт измСнСния для ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π½Π° сСрвСрС Ρ„Π°ΠΉΠ»ΠΎΠ²
#     Π±Π΅Π· выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git add
# [--amend] - пСрСзаписываСт послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ссли Π½Π΅ Π·Π°Π±Ρ‹Ρ‚Ρ‹
#     измСнСния)
  1. Π Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ commit:
$ git push [-u] origin [filter-implementation]
# [-u] - ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ Π²Π΅Ρ‚ΠΊΠΈ [filter-implementation] Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΌ сСрвСрС
#     (origin). ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ измСнСния с сСрвСра ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git pull
#     Π±Π΅Π· явного указания ΠΈΠΌΠ΅Π½ΠΈ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория ΠΈ ΠΈΠΌΠ΅Π½ΠΈ Π²Π΅Ρ‚ΠΊΠΈ.
  1. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ измСнСния с сСрвСра ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ pull ΠΈ ΡΠ»ΠΈΡ‚ΡŒ ΠΈΡ… с отслСТиваСмыми Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ:
$ git pull [remotename [<branch name>]]
  1. Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ»ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ (!Π±Π΅Π· ΠΎΠΏΡ†ΠΈΠΈ -f для Ρ„Π°ΠΉΠ»ΠΎΠ², состояния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ с состояниям Π½Π° сСрвСрС):
$ git rm [-f] [--cached]
# [-f] - ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ (Ρ„Π°ΠΉΠ»Π° с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΌ состояниСм)
# [--cached] - ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° сСрвСрС, Π½ΠΎ Π½Π΅ Π² локальной Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ
  1. ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ (ΠΈΠ»ΠΈ 3 ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: mv, git rm, git add):
$ git mv <file_from> <file_to>

Когда Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ нСсколько Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Ρ‚ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ СстСствСнная ситуация - Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ слияния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ².

  1. БлияниС (Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ 1):
$ git merge upstream/master # слияниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ upstream Π² master
$ git merge master # слияниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ master Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ
  1. БлияниС (Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ 2):
$ git checkout <branch_name> # ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π² Π²Π΅Ρ‚ΠΊΡƒ <branch_name> (ΠΏΡ€ΠΈ нСобходимости)
$ git rebase <base_branch> [<branch_name>] # слияниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ <base_branch> Π² Π²Π΅Ρ‚ΠΊΡƒ <branch_name>
$ git checkout <base_branch>
$ git merge <branch_name>
  1. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²:
$ git mergetool

Π‘Π±ΠΎΡ€ΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CMake ΠΈ Microsoft Visual Studio

Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ описана типичная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ для сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с использованиСм ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ CMake ΠΈ Microsoft Visual Studio. Π”Π°Π»Π΅Π΅ для опрСдСлСнности выполняСтся сборка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈΠ· рСпозитория practice1-devtools.

  1. Рядом с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ΅ΠΉ practice1-devtools создайтС practice1-devtools-build. Π’ Π½ΠΎΠ²ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Ρ„Π°ΠΉΠ»Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², сгСнСрированныС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CMake.

    $ cd ..
    $ mkdir practice1-devtools-build
  2. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ practice1-devtools-build:

    $ cd ./practice1-devtools-build
  3. Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ CMake. Для этого ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ графичСским ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, входящим Π² состав ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, Π»ΠΈΠ±ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

$ cmake -DOpenCV_DIR="<OpenCVConfig.cmake-path>" -G <generator-name> <path-to-practice1-devtools>
# <OpenCVConfig.cmake-path> - дирСктория, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ установлСна
#     Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° OpenCV ΠΈ располоТСн Ρ„Π°ΠΉΠ» OpenCVConfig.cmake
# <generator-name> - Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, Π² случаС тСстовой
#     инфраструктуры участников ΡˆΠΊΠΎΠ»Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ "Visual Studio 10 Win64"
#     (Ссли Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Π½Π°Π±Ρ€Π°Ρ‚ΡŒ cmake Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ
#     список доступных Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²)
# <path-to-practice1-devtools> - ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ
#     practice1-devtools, Π³Π΄Π΅ Π»Π΅ΠΆΠ°Ρ‚ исходныС ΠΊΠΎΠ΄Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Ссли ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ дСйствия
#     Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, Ρ‚ΠΎ это дирСктория`../practice1-devtools`)

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° вСрсия OpenCV 2.4.x, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 2.4.11, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ здСсь.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: послС запуска ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ CMake Π½Π° экранС появятся сообщСния, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π½ΠΈΠΆΠ΅.

-- The C compiler identification is MSVC 16.0.30319.1
-- The CXX compiler identification is MSVC 16.0.30319.1
-- Check for working C compiler using: Visual Studio 10 Win64
-- Check for working C compiler using: Visual Studio 10 Win64 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 10 Win64
-- Check for working CXX compiler using: Visual Studio 10 Win64 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- OpenCV ARCH: x64
-- OpenCV RUNTIME: vc10
-- OpenCV STATIC: OFF
-- Found OpenCV 2.4.11 in c:/OpenCV-2.4.11/opencv/build/x64/vc10/lib
-- You might need to add c:\OpenCV-2.4.11\opencv\build\x64\vc10\bin to your PATH to be able to run your applications.
--
-- General configuration for practice1
-- ======================================
--
--    Configuration:        Release
--    OpenCV build path:    c:\OpenCV-2.4.11\opencv\build
--
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/ss2015/Documents/GitHub/practice1-devtools
  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ сгСнСрированный Ρ„Π°ΠΉΠ» Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ practice1.sln.
  2. НаТмитС ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ ALL_BUILD ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ Rebuild контСкстного мСню, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ всС Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ practice1-devtools-build/bin.
  3. Для запуска прилоТСния ΠΈ тСстов ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку (cmd.exe Π² ΠŸΡƒΡΠΊ) ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ с Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ cd.
  4. МоТно Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ использования ΠΌΠ°Ρ‚Ρ€ΠΈΡ†. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ сообщСниС ΠΏΡ€ΠΈ запускС: The program can't start because opencv_imgproc2411d.dll is missing from your computer. Try reinstalling the program to fix this problem.. РСшСниС 1: ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈΠ· C:\openCV-2.4.11\opencv\build\x64\vcX\bin (vcX - вСрсия Visual Studio, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ значСния vc10, vc11, vc12) ΠΊ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠŸΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ΡΡ Ρ‚Ρ€ΠΈ Ρ‚Π°ΠΊΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ opencv_core2411d.dll, opencv_highgui2411d.dll, opencv_imgproc2411d.dll. РСшСниС 2: Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ C:\openCV-2.4.11\opencv\build\x64\vcX\bin (Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ vcX Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Visual Studio) Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния PATH.
  5. По Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ слСдуСт Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ тСсты. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ прохоТдСния тСстов появится список тСстов ΠΈ статус ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½ΠΈΠΆΠ΅.
[==========] Running 16 tests from 2 test cases.
[----------] Global test environment set-up.
[----------] 5 tests from Matrix
[ RUN      ] Matrix.matrix_can_set_zeros
[       OK ] Matrix.matrix_can_set_zeros (0 ms)
[ RUN      ] Matrix.matrix_can_set_ones
[       OK ] Matrix.matrix_can_set_ones (0 ms)
[ RUN      ] Matrix.comparator_returns_true_on_equal_matrices
[       OK ] Matrix.comparator_returns_true_on_equal_matrices (0 ms)
[ RUN      ] Matrix.comparator_returns_false_on_non_equal_matrices
[       OK ] Matrix.comparator_returns_false_on_non_equal_matrices (0 ms)
[ RUN      ] Matrix.copy_ctor_works
[       OK ] Matrix.copy_ctor_works (1 ms)
[----------] 5 tests from Matrix (4 ms total)

[----------] 11 tests from Instance/FiltersTest
[ RUN      ] Instance/FiltersTest.box_filter_on_zero_mat/0
[       OK ] Instance/FiltersTest.box_filter_on_zero_mat/0 (0 ms)
[ RUN      ] Instance/FiltersTest.box_filter_on_ones_mat/0
[       OK ] Instance/FiltersTest.box_filter_on_ones_mat/0 (0 ms)
[ RUN      ] Instance/FiltersTest.box_filter_on_correct_mat/0
[       OK ] Instance/FiltersTest.box_filter_on_correct_mat/0 (26 ms)
[ RUN      ] Instance/FiltersTest.filter2d_on_zero_mat/0
[       OK ] Instance/FiltersTest.filter2d_on_zero_mat/0 (0 ms)
[ RUN      ] Instance/FiltersTest.filter2d_on_ones_mat/0
[       OK ] Instance/FiltersTest.filter2d_on_ones_mat/0 (0 ms)
[ RUN      ] Instance/FiltersTest.filter2d_on_correct_mat/0
[       OK ] Instance/FiltersTest.filter2d_on_correct_mat/0 (23 ms)
[ RUN      ] Instance/FiltersTest.median_on_zero_mat/0
[       OK ] Instance/FiltersTest.median_on_zero_mat/0 (0 ms)
[ RUN      ] Instance/FiltersTest.median_on_correct_mat/0
[       OK ] Instance/FiltersTest.median_on_correct_mat/0 (25 ms)
[ RUN      ] Instance/FiltersTest.SobelOx_on_zero_mat/0
[       OK ] Instance/FiltersTest.SobelOx_on_zero_mat/0 (0 ms)
[ RUN      ] Instance/FiltersTest.SobelOx_on_ones_mat/0
[       OK ] Instance/FiltersTest.SobelOx_on_ones_mat/0 (0 ms)
[ RUN      ] Instance/FiltersTest.sobel_ox_on_correct_mat/0
[       OK ] Instance/FiltersTest.sobel_ox_on_correct_mat/0 (30 ms)
[----------] 11 tests from Instance/FiltersTest (112 ms total)

[----------] Global test environment tear-down
[==========] 16 tests from 2 test cases ran. (120 ms total)
[  PASSED  ] 16 tests.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с вСрсиСй Visual Studio, которая использовалась ΠΏΡ€ΠΈ сборкС OpenCV. Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ OpenCV доступны Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, собранныС ΠΏΠΎΠ΄ VS 2010, 2012, 2013.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Π°Ρ инструкция ΠΏΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹

  1. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΊ upstream-рСпозитория.
    1. ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ upstream-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ https://github.com/Itseez-NNSU-SummerSchool2015/practice1-devtools.
    2. Π’ ΠΏΡ€Π°Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π΅ΠΌ ΡƒΠ³Π»Ρƒ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Fork.
    3. Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π² качСствС ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΡƒΠ΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΊ, ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π²Π°ΡˆΠ΅ΠΌΡƒ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Ρƒ @github-account.
  2. ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ origin-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΊ сСбС Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.
    1. ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку Git Bash (ΠΈΠ»ΠΈ Git Shell Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ git-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ установлСн Π½Π° вашСй машинС). Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡ‚ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ярлык Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ столС ΠΈΠ»ΠΈ Π² мСню "ΠŸΡƒΡΠΊ".
    2. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Ρ‡Π½Π΅ΠΌ инструкций, описанных Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠžΠ±Ρ‰ΠΈΠ΅ инструкции ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Git).
  3. Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ, запустив тСсты ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.
    1. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ инструкциСй ΠΏΠΎ сборкС ΠΈ запуску, описанной Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π‘Π±ΠΎΡ€ΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CMake ΠΈ MS VS).
    2. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ тСстов, достаточно Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ practice1_test.exe ΠΈ matrix_sample.exe. Если всС тСсты "Π·Π΅Π»Π΅Π½Ρ‹Π΅", Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ дальшС.
$ cd practice1-devtools-build/bin
$ ./practice1_test.exe
$ ./matrix_sample.exe
  1. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Π½Π΅Π΅ для размСщСния Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ инструкций Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠžΠ±Ρ‰ΠΈΠ΅ инструкции ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Git).

  2. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнного наслСдника FiltersYourName ΠΎΡ‚ абстрактного класса Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ².

    1. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» filters_YOUR_NAME.cpp (Ρ„Π°ΠΉΠ» с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС) для собствСнных Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ².
    2. Π’ качСствС шаблона Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ filters_opencv.cpp. МоТно ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ класс Π±Π΅Π· Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠ· Ρ„Π°ΠΉΠ»Π° filters_opencv.cpp Π² Ρ„Π°ΠΉΠ» filters_YOUR_NAME.cpp, Π·Π°ΠΌΠ΅Π½ΠΈΠ² Π½Π°Π·Π²Π°Π½ΠΈΠ΅ класса FiltersOpenCV Π½Π° FiltersYourName (Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°).
    class FiltersYourName : public Filters
    {
     public:
        virtual void boxFilter(const Matrix &src, Matrix& dst, const int kSize = 3)
        { }
        virtual void filter2d(const Matrix &src, Matrix& dst, const Matrix &kernel)
        { }
        virtual void median(const Matrix &src, Matrix &dst, const int kSize = 3)
        { }
        virtual void SobelOx(const Matrix &src, Matrix &dst)
        { }
    };
    1. НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ послС создания Ρ„Π°ΠΉΠ»Π° Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ Ρ€Π°Π· CMake, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Ρ†Π΅ΠΏΠΈΡ‚ΡŒ ΠΈΡ… Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.
    2. Π’ Ρ„Π°ΠΉΠ» filters.hpp Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² enum FILTERS_IMPLEMENTATIONS Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ вашСй Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°. НазовитС Π΅Π³ΠΎ согласно вашСй Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ YOUR_NAME. Π£ΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ пСрСчислСниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³ΠΎΠ½Π΅ ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ тСстов Π½Π° всСх рСализациях класса Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ².
    3. Π’ Ρ„Π°ΠΉΠ»Π΅ filters_factory.cpp ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Filters* createFiltersYourName(). Данная функция Π±ΡƒΠ΄Π΅Ρ‚ использована ΠΏΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса с вашСй Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ².
    4. Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Filters* createFilters(FILTERS_IMPLEMENTATIONS impl) (Ρ„Π°ΠΉΠ» filters_factory.cpp) Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Π²Π΅Ρ‚ΠΊΡƒ Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°- ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ switch, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ исполнСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ссли создан ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² YOUR_NAME.
    5. Π’ Ρ„Π°ΠΉΠ» filters_YOUR_NAME.cpp Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² с вашСй Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Filters* createFiltersYourName(). Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅: для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π² Ρ„Π°ΠΉΠ»Π΅ filters_opencv.cpp.
    Filters* createFiltersYourName()
    {
        Filters* filters = new createFiltersYourName();
        return filters;
    }
    1. ПослС выполнСния пСрСчислСнных дСйствий ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π½ΠΎ тСсты с вашСй Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ°Π΄Π°Ρ‚ΡŒ.
  3. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ всС чисто Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса - ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ, пСрСчислСнныС Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° свой способ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΡ€Π°Π΅Π²Ρ‹Ρ… пиксСлСй Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.

  4. ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° слСдуСт ΠΏΠ΅Ρ€Π΅ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ тСстов. ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ нСльзя! ИзмСнСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ постоянно Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, выкладывая Π² Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Π½Π° сСрвСр (Ρ€Π°Π·Π΄Π΅Π»Ρ‹ ΠžΠ±Ρ‰ΠΈΠ΅ инструкции ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Git, Π‘Π±ΠΎΡ€ΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CMake ΠΈ MS VS).

  5. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°.

    1. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» filter_sample_SURNAME.cpp.
    2. Π’ качСствС шаблона слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ matrix_sample.cpp.
  6. Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° использования собствСнных Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² (Ρ€Π°Π·Π΄Π΅Π» Π‘Π±ΠΎΡ€ΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CMake ΠΈ MS VS)

  7. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Pull Request Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ upstream, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ тСстов Π½Π° Travis-CI ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ прСподаватСлям ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π΅Π²ΡŒΡŽ Π’Π°ΡˆΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°.

  8. Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π·Π°Π΄Π°Ρ‡ списка Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ. НСобходимо ΠΏΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‡Π° Π½Π΅ Π±Ρ‹Π»Π° Π²Ρ‹Π±Ρ€Π°Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ участниками ΡˆΠΊΠΎΠ»Ρ‹. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, Π² основной Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚ пСрвая ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ готовая рСализация.

About

Practice, Day 1 -- Development Tools

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 86.7%
  • CMake 13.3%