Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ Π΄Π²ΠΈΠΆΡΡΠΈΡ ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡΠΎΠΊΠΎΠ², ΡΠ²Π»ΡΡΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΅ΡΡΡΡΠΎΡΠΌΠΊΠΈΠΌΠΈ. Π ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ ΠΈΠΌΠ΅Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΠΌΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΡΡΡΠΈΡ ΠΎ Π½Π°Π»ΠΈΡΠΈΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² Π±ΡΡΡΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΡ ΡΡΠ°Π½Π΅Ρ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ. ΠΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π² Π²ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΡΠ΅ Π²ΡΡΠ΅ Ρ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΡΡ Π½Π° ΡΠΏΠΎΡΠΎΠ±Π΅ Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡ BlobCounter. ΠΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ Π΄Π²ΠΈΠΆΡΡΠΈΡ ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΠΠΠΠ‘Π’ΠΠ Π‘Π’ΠΠ ΠΠΠ ΠΠΠΠΠΠΠΠ― Π ΠΠΠ£ΠΠ Π ΠΠ‘Π‘ΠΠΠ‘ΠΠΠ Π€ΠΠΠΠ ΠΠ¦ΠΠ ΠΠΠ€ΠΠΠ Π ΠΠΠ€ΠΠ ΠΠΠ¦ΠΠΠΠΠ«Π₯ Π‘ΠΠ‘Π’ΠΠ ΠΠ£Π Π‘ΠΠΠΠ― Π ΠΠΠΠ’Π ΠΠΎ ΡΠ΅ΠΌΠ΅: Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ Π΄Π²ΠΈΠΆΡΡΠΈΡ ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π΄Π»Ρ Π·Π°Π΄Π°Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π’ΡΠΌΠ΅Π½Ρ 2012
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΠ°Π΄Π°ΡΠΈ
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π²ΠΈΠ΄Π΅ΠΎΠ½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. ΠΠΎΠΆΠ½ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΡΠΈΡΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅ΠΎΠ½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. ΠΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΠΉ, ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΡΠ°Π½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Π½Π° ΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌΡΡ ΡΠ΅ΡΡΠΈΡΠΎΡΠΈΡ, ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π»ΠΎΠΆΠ½ΡΡ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΠΉ Π·Π° ΡΡΠ΅Ρ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², Π½Π°Π³Π»ΡΠ΄Π½ΠΎΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΉ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. Π‘ΡΠ΅Π΄ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ² ΡΠ°ΠΊΠΈΡ ΡΠΈΡΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π·Π°ΡΡΡΠ΄Π½Π΅Π½Π½ΡΡ ΡΠ°Π±ΠΎΡΡ Π² Π½Π΅Π±Π»Π°Π³ΠΎΠΏΡΠΈΡΡΠ½ΡΡ ΠΏΠΎΠ³ΠΎΠ΄Π½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΌΠ°Π½.
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠ½Π°Π±ΠΆΠ΅Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ (Motion detector) ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π²ΠΈΠ΄Π΅ΠΎΠ΄Π°Π½Π½ΡΠ΅ Π² ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π΄Π»Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ Π½Π° Π²ΠΈΠ΄Π΅ΠΎΠ΄Π°Π½Π½ΡΡ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΡΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΠΈΠ΄Π΅ΠΎΠ΄Π°Π½Π½ΡΡ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ Π±ΡΠ²Π°Π΅Ρ Π²ΡΠ³ΠΎΠ΄Π½ΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π½Π° Π²Π°ΡΠ΅ΠΉ Π΄Π°ΡΠ΅, ΠΎΡΠΈΡΠ΅, ΠΊΠΎΡΡΠ΅Π΄ΠΆΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΡΠ°ΡΡΠΊΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ Π»ΡΠ΄ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΌ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΈ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π½Π°ΡΠ½ΡΡΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π΅ΠΎΠ΄Π°Π½Π½ΡΡ ΠΈ ΡΠ»Π΅ΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ. Π Π΄ΡΡΠ³ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Ρ Π²ΠΈΠ΄Π΅ΠΎΠ΄Π°Π½Π½ΡΡ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ°, ΡΠΎ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π΅Ρ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ»Π°.
ΠΠ»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π²ΠΈΠ΄Π΅ΠΎΠ΄Π°Π½Π½ΡΡ Π½Π° ΡΠΊΡΠ°Π½ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π»Π΅ΡΠΎΠ½Π°. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠ°ΠΌ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΌΠΎΠ³ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: Π²ΡΠ·ΠΎΠ² ΠΏΠΎΠ»ΠΈΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΡΠ΅ ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠ΄ ΡΠ³ΡΠΎΠ·ΠΎΠΉ ΠΈΠ»ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, Π΅ΡΠ»ΠΈ ΠΊ Π²Π°ΠΌ Π·Π°Π±Π΅ΠΆΠ°Π»ΠΈ Π΄Π΅ΡΠΈ, ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π±ΡΠΎΡΠΈΠ²ΡΠΈΠ΅ ΠΌΡΡ ΡΠ΅ΡΠ΅Π· Π²Π°ΡΡ ΠΎΠ³ΡΠ°Π΄Ρ.
Π’Π°ΠΊΠΆΠ΅ Π² ΡΠ΅ΠΎΡΠΈΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ»ΡΡΡΠΈΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ Π²ΠΈΠ΄Π΅ΠΎ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΎΠ΄ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΠΌ Π²ΠΈΠ΄Π΅ΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ Π½Π΅ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΡΠ°ΠΌΠΎΠΉ Π²ΠΈΠ΄Π΅ΠΎΠ·Π°ΠΏΠΈΡΠΈ (ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΡΠ°ΡΡΠΎΡΠ° ΠΊΠ°Π΄ΡΠΎΠ², Π±ΠΈΡΡΠ΅ΠΉΡ, ΡΠ²Π΅ΡΠΎΠ²ΠΎΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅), Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ ΠΏΠΎ Π²ΠΈΠ΄Π΅ΠΎΠ΄Π°Π½Π½ΡΠΌ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ° ΠΊΠ°ΠΌΠ΅ΡΡ. ΠΡΠ»ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° Π½ΠΈΠΌ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄Π΅ΠΎΡΡΡΠΌΠΊΠΈ ΠΈ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΠΉ.
ΠΠΎΠ΄Π²Π΅Π΄ΡΠΌ ΠΈΡΠΎΠ³: Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΈΠΊΡΠΈΡΡΠ΅Ρ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° Π²ΠΈΠ΄Π΅ΠΎΠ΄Π°Π½Π½ΡΡ , ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΌΠ΅ΡΡ, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠ±Π·ΠΎΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ
ΠΠ°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎ Π½Π°Π»ΠΈΡΠΈΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°Π·Π±Π΅ΡΡΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΏΠΎΠΈΡΠΊΠ° Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ (Motion Detection Algorithms).
ΠΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π² ΠΏΠΎΡΠΎΠΊΠ΅ Π²ΠΈΠ΄Π΅ΠΎ. ΠΡΠ΅ ΠΎΠ½ΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠ°Π΄ΡΠ° Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΊΠ°Π΄ΡΠΎΠ² ΠΈΠ»ΠΈ Ρ ΡΠ΅ΠΌ-ΡΠΎ, ΡΡΠΎ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π½Π°Π·ΡΠ²Π°ΡΡ ΡΠΎΠ½. Π Π°Π·Π±Π΅ΡΡΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΡ .
Π ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Ρ Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ AForge.NET.
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠ°Π΄ΡΠ° Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ. ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°Ρ ΡΠΆΠ°ΡΠΈΡ Π²ΠΈΠ΄Π΅ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠ΅Π½ΠΈΡΡ Π»ΠΈΡΡ ΡΡΠ΅ΠΏΠ΅Π½Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π° Π½Π΅ Π²Π΅ΡΡ ΠΊΠ°Π΄Ρ. ΠΠΎ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΌΡΠΉ Π»ΡΡΡΠΈΠΉ ΠΈΠ· ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ.
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ RGB ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ Π³Π»ΡΠ±ΠΈΠ½ΠΎΠΉ ΡΠ²Π΅ΡΠ° 24 Π±ΠΈΡ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ΅ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°Π΄Ρ (image), ΡΠ΅ΡΠ½ΠΎ-Π±Π΅Π»Π°Ρ ΠΊΠΎΠΏΠΈΡ (currentFrame) ΠΈ ΡΠ΅ΡΠ½ΠΎ-Π±Π΅Π»Π°Ρ ΠΊΠΎΠΏΠΈΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΊΠ°Π΄ΡΠ° (backgroundFrame). ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΉΠ΄Π΅ΠΌ ΡΠ΅ ΡΠ΅Π³ΠΈΠΎΠ½Ρ, Π³Π΄Π΅ ΡΡΠΈ Π΄Π²Π° ΠΊΠ°Π΄ΡΠ° ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ. ΠΠ»Ρ ΡΠ΅Π»Π΅ΠΉ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Difference ΠΈ Threshold ΡΠΈΠ»ΡΡΡΡ.
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
// ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΈΠ»ΡΡΡΠΎΠ²
Difference differenceFilter = new Difference ();
IFilter thresholdFilter = new Threshold (15);
// Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΈΠ»ΡΡΡΠΎΠ² ΡΠ°Π·Π½ΠΈΡΡ
differenceFilter.OverlayImage = backgroundFrame;
// ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠΈΠ»ΡΡΡΡ
Bitmap tmp1 = differenceFilter. Apply (currentFrame);
Bitmap tmp2 = thresholdFilter. Apply (tmp1);
ΠΠ° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ Π±Π΅Π»ΡΠΌΠΈ ΠΏΠΈΠΊΡΠ΅Π»Π°ΠΌΠΈ Π½Π° ΠΌΠ΅ΡΡΠ΅, Π³Π΄Π΅ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°Π΄Ρ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΊΠ°Π΄ΡΠ° Π½Π° ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠ³Π°. ΠΠΎΠ΄ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ, ΠΈ Π΅ΡΠ»ΠΈ ΠΈΡ ΡΡΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΡΡΠ΅Π²ΠΎΠ³ΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎ ΠΏΡΠΎΠΈΡΡΠ΅ΡΡΠ²ΠΈΠΈ.
ΠΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΊΠ°ΠΌΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ ΡΡΠΌΠ½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΊ ΡΡΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ°ΠΊΠΈΡ ΠΌΠ΅ΡΡΠ°Ρ , Π³Π΄Π΅ Π½Π΅Ρ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π²ΠΎΠΎΠ±ΡΠ΅. ΠΠ»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΡΠΌΠ½ΡΡ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠ»ΡΡΡ Erosion. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ΅ΠΉΡΠ°Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΡΠ΅Π³ΠΈΠΎΠ½Ρ, Π³Π΄Π΅ Π±ΡΠ»ΠΎ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅.
/ / Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠΈΠ»ΡΡΡ
IFilter erosionFilter = new Erosion ();
/ / ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠΈΠ»ΡΡΡ
Bitmap tmp3 = erosionFilter. Apply (tmp2);
ΠΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ Π΄Π°ΡΡΠΈΠΊ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π³ΠΎΡΠΎΠ²! ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ² Π² ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ.
// ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° ΠΎΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
IFilter extrachChannel = new ExtractChannel (RGB.R);
Bitmap redChannel = extrachChannel. Apply (image);
// Π‘Π»ΠΈΡΠ½ΠΈΠ΅ ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° Ρ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ²
Merge mergeFilter = new Merge ();
mergeFilter.OverlayImage = tmp3;
Bitmap tmp4 = mergeFilter. Apply (redChannel);
// ΠΠ°ΠΌΠ΅Π½ΠΈΡΡ ΠΊΡΠ°ΡΠ½ΡΠΉ ΠΊΠ°Π½Π°Π» Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ
ReplaceChannel replaceChannel = new ReplaceChannel (RGB.R);
replaceChannel.ChannelImage = tmp4;
Bitmap tmp5 = replaceChannel. Apply (image);
Π ΠΈΡ.1
ΠΠ· ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²ΡΡΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π ΠΈΡ. 1 ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°. ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π²ΠΈΠΆΠ΅ΡΡΡ ΠΏΠ»Π°Π²Π½ΠΎ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²Π΅ΡΡ Π΄Π²ΠΈΠΆΡΡΠΈΠΉΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΡΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Ρ ΡΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π²ΠΈΠΆΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, ΡΠΎΠ³Π΄Π° Π°Π»Π³ΠΎΡΠΈΡΠΌ Π½Π΅ Π΄Π°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π²ΠΎΠΎΠ±ΡΠ΅.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄. ΠΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°Π΄Ρ Π½Π΅ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ, Π° Ρ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΊΠ°Π΄ΡΠΎΠΌ Π²ΠΈΠ΄Π΅ΠΎΠ·Π°ΠΏΠΈΡΠΈ. Π’Π°ΠΊ ΡΡΠΎ, Π΅ΡΠ»ΠΈ Π½Π΅ Π±ΡΠ»ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΊΠ°Π΄ΡΠ΅, ΡΠΎ ΠΏΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠ°Π΄ΡΠ° Ρ ΠΏΠ΅ΡΠ²ΡΠΌ Π΄Π°ΡΡ Π½Π°ΠΌ ΡΠ΅Π»ΡΠΉ Π΄Π²ΠΈΠΆΡΡΠΈΠΉΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π΅Π³ΠΎ ΡΠΊΠΎΡΠΎΡΡΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ — ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΠ²Π΅ΡΠΈΠΌ ΠΊΠ°ΡΡΠΈΠ½Ρ Π½Π° ΡΡΠ΅Π½Ρ? Π‘ΠΈΡΡΠ΅ΠΌΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎ Π½Π°Π»ΠΈΡΠΈΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΠΊ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡΡ, ΡΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ RGB Π½Π° 24 Π±ΠΈΡ/ΠΏΠΊΡ, Π½Π°Π·Π²Π°Π½Π½ΠΎΠ΅ ΡΠ΅ΠΊΡΡΠΈΠΌ ΠΊΠ°Π΄ΡΠΎΠΌ (image), Π΅Π³ΠΎ ΡΡΡΠ½ΠΎ-Π±Π΅Π»Π°Ρ ΠΊΠΎΠΏΠΈΡ (currentFrame) ΠΈ ΡΠΎΠ½ΠΎΠ²ΡΠΉ ΠΊΠ°Π΄Ρ, ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ½ΠΎ-Π±Π΅Π»ΡΠΉ (backgroundFrame). ΠΠ½Π°ΡΠ°Π»Π΅, ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΊΠ°Π΄Ρ Π²ΠΈΠ΄Π΅ΠΎΠ·Π°ΠΏΠΈΡΠΈ ΠΊΠ°ΠΊ ΡΠΎΠ½ΠΎΠ²ΡΠΉ ΠΊΠ°Π΄Ρ. Π Π·Π°ΡΠ΅ΠΌ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°Π΄Ρ Ρ ΡΠΎΠ½ΠΎΠ²ΡΠΌ. ΠΠΎ ΡΡΠΎ Π΄Π°ΡΡ Π½Π°ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΎΠΏΠΈΡΠ°Π» Π²ΡΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΠΌ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ Π½ΡΠΆΠ΅Π½. ΠΡ ΡΠ»ΡΡΡΠΈΠΌ Π΄Π°Π½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ. Π€ΠΎΠ½ΠΎΠ²ΡΠΉ ΠΊΠ°Π΄Ρ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ°ΡΡΡΡ ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΠΊΠ°Π΄ΡΡ (1 ΡΡΠΎΠ²Π΅Π½Ρ Π½Π° ΠΊΠ°Π΄Ρ). ΠΡΠΈ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠΈ ΡΠΎΠ½ΠΎΠ²ΡΠΉ ΠΊΠ°Π΄Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠ°Π΄ΡΠ°, ΡΠ²Π΅ΡΠ° ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΠΊΠ°Π΄ΡΠ΅ ΡΡΡΡΠΊΡΡΡΠΈΡΡΡΡ ΠΊ ΠΏΠΈΠΊΡΠ΅Π»ΡΠΌ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ 1 ΡΡΠΎΠ²Π½Π΅ΠΌ Π½Π° ΠΊΠ°Π΄Ρ.
/ / Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠΈΠ»ΡΡΡ
MoveTowards moveTowardsFilter = new MoveTowards ();
// ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΡΠΎΠ½ Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°Π΄Ρ
moveTowardsFilter.OverlayImage = currentFrame;
Bitmap tmp = moveTowardsFilter. Apply (backgroundFrame);
// Π£Π΄Π°Π»ΡΠ΅ΠΌ ΡΡΠ°ΡΡΠΉ ΡΠΎΠ½
backgroundFrame.Dispose ();
backgroundFrame = tmp;
Π ΡΠ΅ΠΏΠ΅ΡΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎ, ΡΡΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π²ΡΡΠ΅. ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° .
// Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΈΠ»ΡΡΡΠΎΠ²
FiltersSequence processingFilter = new FiltersSequence ();
processingFilter.Add (new Difference (backgroundFrame));
processingFilter.Add (new Threshold (15));
processingFilter.Add (new Opening ());
processingFilter.Add (new Edges ());
// ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠΈΠ»ΡΡΡ
Bitmap tmp1 = processingFilter. Apply (currentFrame);
// ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΊΡΠ°ΡΠ½ΡΠΉ ΠΊΠ°Π½Π°Π»
IFilter extrachChannel = new ExtractChannel (RGB.R);
Bitmap redChannel = extrachChannel. Apply (image);
// ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° Ρ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
Merge mergeFilter = new Merge ();
mergeFilter.OverlayImage = tmp1;
Bitmap tmp2 = mergeFilter. Apply (redChannel);
// Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΊΡΠ°ΡΠ½ΡΠΉ ΠΊΠ°Π½Π°Π» Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ
ReplaceChannel replaceChannel = new ReplaceChannel (RGB.R);
replaceChannel.ChannelImage = tmp2;
Bitmap tmp3 = replaceChannel. Apply (image);
Π ΠΈΡ.2
ΠΡΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΎΠΉ ΠΈΠ΄Π΅ΠΈ. ΠΠ°ΠΊ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΡΠ»ΡΡΠ°ΡΡ , Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠ°Π΄Ρ ΠΈ Π΅Π³ΠΎ ΡΠ΅ΡΠ½ΠΎ-Π±Π΅Π»Π°Ρ ΠΊΠΎΠΏΠΈΡ ΠΈ ΠΊΠΎΠΏΠΈΡ ΡΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ°Π΄ΡΠ°. ΠΠΎ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΠΈΠ»ΡΡΡ Pixellate ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΠΊΠ°Π΄ΡΡ ΠΈ ΠΊ ΡΠΎΠ½Ρ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ.
// ΡΠΎΠ·Π΄Π°ΡΠΌ ΡΠΈΠ»ΡΡΡ
IFilter pixellateFilter = new Pixellate ();
// ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠΈΠ»ΡΡΡ
Bitmap newImage = pixellateFilter (image);
Π’Π°ΠΊ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΈ ΡΠΎΠ½ΠΎΠ²ΡΠΉ ΠΊΠ°Π΄ΡΡ Ρ ΡΠΈΠ»ΡΡΡΠΎΠΌ Pixellate. Π’Π΅ΠΏΠ΅ΡΡ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΡ ΡΠΎΠ½ΠΎΠ²ΡΠΉ ΠΊΠ°Π΄Ρ ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΠΊΠ°Π΄ΡΡ, ΠΊΠ°ΠΊ ΠΌΡ Π΄Π΅Π»Π°Π»ΠΈ ΠΏΡΠ΅ΠΆΠ΄Π΅. Π‘Π»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ — ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ°Π³ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ:
// ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΈΠ»ΡΡΡΠΎΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ
FiltersSequence processingFilter = new FiltersSequence ();
processingFilter.Add (new Difference (backgroundFrame));
processingFilter.Add (new Threshold (15));
processingFilter.Add (new Dilatation ());
processingFilter.Add (new Edges ());
// ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠΈΠ»ΡΡΡ
Bitmap tmp1 = processingFilter. Apply (currentFrame);
ΠΠΎΡΠ»Π΅ ΡΠ»ΠΈΡΠ½ΠΈΡ tmp1 ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΊΡΠ°ΡΠ½ΡΠΌ ΠΊΠ°Π½Π°Π»ΠΎΠΌ. Π ΠΈΡΠΎΠ³Π΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ:
Π ΠΈΡ.3
ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π΅ ΡΡΠΎΠ»Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΡΠΌ ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅, Π½ΠΎ Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠ°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
Π§Π°ΡΡΠΎ Π±ΡΠ²Π°Π΅Ρ ΡΠ°ΠΊ ΡΡΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, Π²ΡΠ΄Π΅Π»ΡΡΡ Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ Π³ΡΠ°Π½ΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΄Π΅Π»Π°Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ»Π°ΡΡ BlobCounter Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠForge NET.
BlobCounter blobCounter = new BlobCounter ();
…
// ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ· ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ²
blobCounter.ProcessImage (thresholdedImage);
Rectangle[] rects = BlobCounter. GetObjectRectangles ();
// ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
Graphics g = Graphics. FromImage (image);
// ΡΠΈΡΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ
using (Pen pen = new Pen (Color.Red, 1))
{
foreach (Rectangle rc in rects)
{
g.DrawRectangle (pen, rc);
if ((rc.Width > 15) && (rc.Height > 15))
{
// ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ
}
}
}
g.Dispose ();
Π ΠΈΡ.4
ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ°
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡΠΎΠΊΠΎΠ², ΡΠ²Π»ΡΡΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΅ΡΡΡΡΠΎΡΠΌΠΊΠΈΠΌΠΈ. Π ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ ΠΈΠΌΠ΅Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΠΌΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΡΡΡΠΈΡ ΠΎ Π½Π°Π»ΠΈΡΠΈΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² Π±ΡΡΡΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΡ ΡΡΠ°Π½Π΅Ρ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ. ΠΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π² Π²ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΡΠ΅ Π²ΡΡΠ΅ Ρ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΡΡ Π½Π° ΡΠΏΠΎΡΠΎΠ±Π΅ Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡ BlobCounter. ΠΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ Π² ΠΏΠ»Π°Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°. AForge.NET Framework
Π²ΠΈΠ΄Π΅ΠΎΠ½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ
AForge.NET ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° C# Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² ΠΎΠ±Π»Π°ΡΡΡΡ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ ΠΈ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΠ° — ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, Π½Π΅ΠΉΡΠΎΠ½Π½ΡΠ΅ ΡΠ΅ΡΠΈ, Π³Π΅Π½Π΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ, Π½Π΅ΡΠ΅ΡΠΊΠ°Ρ Π»ΠΎΠ³ΠΈΠΊΠ°, ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΠΈΠ½Ρ, ΡΠΎΠ±ΠΎΡΠΎΡΠ΅Ρ Π½ΠΈΠΊΠ°, ΠΈ Ρ. Π΄.
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π°Π±ΠΎΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡ ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ:
Β· AForge. Imaging — Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΠΈΠ»ΡΡΡΠ°ΠΌΠΈ;
Β· AForge. Vision — Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ;
Β· AForge. Video — Π½Π°Π±ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΠΈΠ΄Π΅ΠΎΠ΄Π°Π½Π½ΡΡ ;
Β· AForge. Neuro — Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π½Π΅ΠΉΡΠΎΠ½Π½ΡΡ ΡΠ΅ΡΠ΅ΠΉ;
Β· AForge. Genetic — Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π²ΠΈΡΠΈΡ;
Β· AForge. Fuzzy — Π½Π΅ΡΠ΅ΡΠΊΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ;
Β· AForge. Robotics — Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π½Π°Π±ΠΎΡΠΎΠ² ΡΠΎΠ±ΠΎΡΠΎΡΠ΅Ρ Π½ΠΈΠΊΠΈ;
Β· AForge. MachineLearning — Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΌΠ°ΡΠΈΠ½Ρ;
Β· ΠΈ Ρ. Π΄.
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎ Π½Π°Π»ΠΈΡΠΈΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΈΠ»ΡΡΡΡ Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΠ΅ΡΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ Imaging ΠΈ Video
Pixellate — ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΡΡΡΠ΅ΠΊΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΏΠΈΠΊΡΠ΅Π»ΡΠΌΠΈ — pixellated ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΡΡΠ΅ΠΊΡ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡ, Π·Π°ΠΏΠΎΠ»Π½ΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ²Π΅ΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ΅Π΄Π½ΠΈΠΌ ΡΠΎΠ½ΠΎΠΌ ΠΊΡΠ°ΡΠΊΠΈ Π΄Π»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°. Π Π°Π·ΠΌΠ΅Ρ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ², ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ PixelWidth ΠΈ PixelHeight.
Difference — ΡΠΈΠ»ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΡ Π±Π΅ΡΠ΅Ρ Π΄Π²Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΡ) ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, ΠΈ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΡΡΡ, ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΡΠ°Π²Π½ΡΠ΅ΡΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠΉ ΡΠ°Π·Π½ΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΠΏΠΈΠΊΡΠ΅Π»ΡΠΌΠΈ ΠΎΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ.
Dilatation — ΡΠΈΠ»ΡΡΡ Π½Π°Π·Π½Π°ΡΠ°Π΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΊΡΡΠΆΠ°ΡΡΠΈΡ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°. ΠΠΊΡΡΠΆΠ°ΡΡΠΈΠ΅ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ, ΡΡΡΡΠΊΡΡΡΠΈΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ: 1 — ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΡΠ΅Π΄Π°,-1 — ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ Π΅Π³ΠΎ.
Π€ΠΈΠ»ΡΡΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π³Π΄Π΅ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΠ°ΡΠΈΠ²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠΈΡ ΠΊΠ°Π΄ΡΠΎΠ² Π²ΡΠ΅ΠΌΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌΠΈ ΡΠΈΠ»ΡΡΡΠ°ΠΌΠΈ.
I.ΠΠ»Π°Π²Π°. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΡΡ Π΅ΠΌΠ° ΡΠΈΡΡΠ΅ΠΌΡ
Π ΠΈΡ.5
ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ 5 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΡΡ Π΅ΠΌΠ° ΡΠΈΡΡΠ΅ΠΌΡ Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ ΡΠ»Π΅ΠΆΠ΅Π½ΠΈΡ Π·Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ. Π ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ° ΠΈΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΡΡΡΡ, Π²ΡΠ³ΠΎΠ΄Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΌΠ΅ΡΡ cΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ wi-fi. ΠΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠΎ ΡΠ½ΡΡΠ°ΠΌΠΈ. ΠΡΠ°Π²Π΄Π° Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈΠ΄ΡΡΡΡ ΠΏΠΎΡΡΠ°ΡΠΈΡΡΡ Π½Π° ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ wi-fi ΡΠΎΡΡΠ΅Ρ.
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΠ»Π°Π²Π½Π°Ρ ΡΠΎΡΠΌΠ°, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Π²Π΅Π±-ΠΊΠ°ΠΌΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² ΠΊΠ°ΠΊΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ:
Π ΠΈΡ.6
Π ΠΌΠΎΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π΅ΡΡΡ Π΄Π²Π° ΠΊΠ»Π°ΡΡΠ° Form1(ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ) ΠΈ ImageProcessing (ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΌΠ½ΠΎΠΉ).
ΠΠ»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° ΠΊΠ°ΠΌΠ΅Ρ Π² ΠΊΠ»Π°ΡΡΠ΅ Form1 ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° GetCamList. ΠΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ AForge net.
private VideoCaptureDevice videoSource = null;
ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π²ΠΈΠ΄Π΅ΠΎΡΠΈΠ³Π½Π°Π»Π° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π²ΠΈΠ΄Π΅ΠΎΠ΄Π°Π½Π½ΡΠ΅ ΠΎΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π²ΠΈΠ΄Π΅ΠΎΡΡΠ΅ΠΌΠΊΠΈ ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ, USB Π²Π΅Π±-ΠΊΠ°ΠΌΠ΅ΡΠ°, ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π·Π°Ρ Π²Π°ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎ, ΡΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ DirectShow.
private void getCamList (ComboBox t)
{
try
{
videoDevices = new FilterInfoCollection (FilterCategory.VideoInputDevice);
t.Items.Clear ();
if (videoDevices.Count == 0)
throw new ApplicationException ();
DeviceExist = true;
foreach (FilterInfo device in videoDevices)
{
t.Items.Add (device.Name);
}
t.SelectedIndex = 0; //make dafault to first cam
}
catch (ApplicationException)
{
DeviceExist = false;
t.Items.Add («No capture device on your system»);
}
}
ΠΠ΄Π΅ΡΡ ΠΊΠ»ΠΎΠ½ΠΈΡΡΡΡΡΡ ΠΊΠ°Π΄ΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅ ImageProcessing. Π ΠΈΡΠΎΠ³Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ½Π½ΡΠΉ ΠΊΠ°Π΄Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ ΡΠΎΡΠΌΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ pictureBox1.
void captureDevice_NewFrame (object sender, NewFrameEventArgs eventArgs)
{
Bitmap image = (Bitmap)eventArgs.Frame.Clone ();
Proc.ProcessFrame (ref image);
pictureBox1.Image = image;
}
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠΈΡ ΠΊΠ°Π΄ΡΠΎΠ²:
public void ProcessFrame (ref Bitmap image)
{
max = 0;
if (backgroundFrame == null)
{
// ΡΠΎΠ·Π΄Π°ΡΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ ΡΠΎΠ½Π°
backgroundFrame = processingFilter1. Apply (image);
//Π·Π°Π΄Π°ΡΠΌ ΡΠ°Π·ΠΌΠ΅Ρ
width = image. Width;
height = image. Height;
//Π·Π°ΠΊΡΡΡΠΈΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ
return;
}
Bitmap tmpImage;
//ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΈΠ»ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
tmpImage = processingFilter1. Apply (image);
if (++counter == 2)
{
counter = 0;
// ΡΡΡΡΠΊΡΡΡΠΈΡΡΠ΅ΠΌ ΡΠΎΠ½ΠΎΠ²ΡΠΉ ΠΊΠ°Π΄Ρ ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ
moveTowardsFilter.OverlayImage = tmpImage;
moveTowardsFilter.ApplyInPlace (backgroundFrame);
}
differenceFilter.OverlayImage = backgroundFrame;
// Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΠΌ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠ΄Π° ΡΠΈΠ»ΡΡΡΠΎΠ²
bitmapData = tmpImage. LockBits (new Rectangle (0, 0, width, height),
ImageLockMode.ReadWrite, PixelFormat. Format8bppIndexed);
differenceFilter.ApplyInPlace (bitmapData);
thresholdFilter.ApplyInPlace (bitmapData);
blobCounter.ProcessImage (bitmapData);
//ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ
Rectangle[] rects = blobCounter. GetObjectsRectangles ();
//ΡΠ½ΠΈΠΌΠ°Π΅ΠΌ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ
tmpImage.UnlockBits (bitmapData);
tmpImage.Dispose ();
pixelsChanged = 0;
if (rects.Length ≠0)
{
// ΡΠΎΠ·Π΄Π°ΡΠΌ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ
Graphics g = Graphics. FromImage (image);
using (Pen pen = new Pen (Color.Red, 1))
{
int n = 0;
int t = 0;
//ΡΠΈΡΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ
foreach (Rectangle rc in rects)
{
g.DrawRectangle (pen, rc);
if ((t < 10) && (rc.Width > 30) && (rc.Height > 30))
{
if ((max < rc. Width * rc. Height))
{
max = rc. Width * rc. Height;
cord_X = rc. X + rc. Width / 2;
cord_Y = rc. Y + rc. Height / 2;
}
cl.pictureBox2.Visible = true;
g.DrawImage (numbersBitmaps[n], rc. Left, rc. Top, 17, 19);
//n++;
t++;
}
h++;
if (h > 25)
{
h = 0;
// Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ ΡΠΊΠΎΡΠΎΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠ΅ 25 ΠΊΠ°Π΄ΡΠΎΠ²
speed = Math. Abs (cord_X — cord_X1) + Math. Abs (cord_Y — cord_Y1);
g.DrawString («Π‘ΠΊΠΎΡΠΎΡΡΡ:» + speed + «pix/s», font1, br, f);
r = speed;
cord_X1 = cord_X;
cord_Y1 = cord_Y;
}
g.DrawString («Π‘ΠΊΠΎΡΠΎΡΡΡ:» + r + «pix/s», font1, br, f);
if (calculateMotionLevel)
pixelsChanged += rc. Width * rc. Height;
}
}
g.Dispose ();
}
}
Π ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°Π΄ΡΠΎΠ² ΡΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ. Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΌΠ΅ΡΡΠ° ΡΠ°Π·Π»ΠΈΡΠΈΡ ΡΡΠΈΡ ΠΊΠ°Π΄ΡΠΎΠ² ΠΎΠ±Π²ΠΎΠ΄ΡΡΡΡ Π² ΠΊΡΠ°ΡΠ½ΡΠ΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ. Π’Π΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² Π²ΠΈΠ΄Π΅ΠΎΠ·Π°ΠΏΠΈΡΠΈ. Π ΠΈΡΠΎΠ³Π΅ ΠΌΡ ΡΠ·Π½Π°ΡΠΌ ΡΠΊΠΎΡΠΎΡΡΡ ΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ²ΠΈΠ²ΡΠ΅Π³ΠΎΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠ°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π² ΠΊΠ°ΠΊΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ²Π΅ΡΠ½ΡΡΡΡΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΎΡΡ Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ Π΄Π»Ρ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΠΌΠ΅ΡΡ.
ΠΠ°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΡΠ°Π·Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ΅Π½Ρ (ΡΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ°Π΄ΡΠ°), ΠΏΠΎΡΡΠΎΠΌΡ Π΅ΡΠ»ΠΈ Π²Ρ Π²Π΄ΡΡΠ³ ΠΏΠΎΠ²Π΅ΡΠΈΡΠ΅ ΠΊΠ°ΡΡΠΈΠ½Ρ, ΠΏΡΠΎΠΉΠ΄ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΠ° Π²ΠΎΠΉΠ΄ΡΡ Π² ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ²ΡΠΈΠΉΡΡ ΡΠ΅ΠΆΠΈΠΌ ΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½Π΅Ρ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎ Π½Π°Π»ΠΈΡΠΈΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ.
class UnmanagedImage;
ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΏΠ°ΠΌΡΡΡ, Π³Π΄Π΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΎ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²ΡΠ³ΠΎΠ΄Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π ΡΠ°ΠΊΠΎΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² .NET ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Ρ ΡΠ΄ΡΠ΅ΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΈ Π·Π°ΡΠ΅ΠΌ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΡΠ΄Π΅Π»Π°Π½Π°. ΠΠ΅Π· Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ/ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΡΠΌΠΎΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΠ»ΠΎΠΊ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°:
True false
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ
ΠΠ½ΠΎΡ Π±ΡΠ»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠ°Ρ ΠΊΠ°ΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ. Π ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Aforge net ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Robotics Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°ΠΌΠΈ. ΠΡΠ»ΠΈ ΠΈΠ·ΡΡΠ΅Π½Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ.
II.ΠΠ»Π°Π²Π°. ΠΡΠΎΠ³
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΡΠΎΠ³Π° ΠΌΠΎΠ³Ρ ΡΠΊΠ°Π·Π°ΡΡ ΡΡΠΎ Π±ΡΠ»ΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΠΉ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎ Π½Π°Π»ΠΈΡΠΈΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΡΠΌΠ°Ρ ΡΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° Ρ Π²Π°ΡΠΈΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π²ΠΈΠ΄Π΅ΠΎΠ½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ.
Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ
1. ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ: http://www.codeproject.com/Articles/10 248/Motion-Detection-Algorithms
2. Π‘Π°ΠΉΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Aforge net: http://www.aforgenet.com/framework/
3. Π‘ΠΈΡΡΠ΅ΠΌΡ ΡΠ»Π΅ΠΆΠ΅Π½ΠΈΡ: http://www.bestreferat.ru/referat-64 402.html
4. ΠΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ: http://www.codeproject.com/Articles/45 735/Laser-Guided-Tic-Tac-Toe-Game-using-Webcam-For-Vis
5. ΠΠΎΡΠΎΠΊΠΈ Π² C#: http://www.rsdn.ru/article/dotnet/CSThreading1.xml
6. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π΅Π±-ΠΊΠ°ΠΌΠ΅ΡΡ: http://www.aforgenet.com/articles/lego_pan_tilt_camera/