ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° тСстового прилоТСния. 
НаписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ПослС этого создадим Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ MS Paint ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ Π±Π»Π°Π½ΠΊ с Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π“ΠΎΡ‚ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±Π»Π°Π½ΠΊΠ° размСстим Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ скомпилированного прилоТСния. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ изобраТСния, ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ Π±Π»Π°Π½ΠΊ с Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3.2. Π Π°Π·ΠΌΠ΅Ρ€ изобраТСния совпадаСт с ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Image, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ тСстового… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° тСстового прилоТСния. НаписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ тСстового прилоТСния ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ C++ Builder Embarcadero 7. Данная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для Windows. Π˜ΠΌΠ΅Π΅Ρ‚ Π² ΡΠ²ΠΎΠ΅ΠΌ составС конструктор Ρ„ΠΎΡ€ΠΌ ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ элСмСнты для Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ ΡƒΡΠΊΠΎΡ€Π΅Π½ΠΈΡ процСсса программирования.

Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ срСды C++ Builder Embarcadero прСдставлСн Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3.1. Π’ΠΎ Π²ΡΠ΅Ρ… ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… вСрсиях внСшний Π²ΠΈΠ΄ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΎΠΊΠ½Π° ΠΏΠΎΡ‡Ρ‚ΠΈ Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ ΠΎΡ‚личаСтся. Π’ ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π»Π΅ΠΆΠΈΡ‚ Ρ„ΠΎΡ€ΠΌΠ°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ управлСния. Для создания прилоТСния с Ρ„ΠΎΡ€ΠΌΠΎΠΉ Π² ΠΌΠ΅Π½ΡŽ Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ->ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ VCL Application. ПослС этого ΠΌΠΎΠΆΠ½ΠΎ нСпосрСдствСнно ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡŽ ΠΊΠΎΠ΄Π°.

ΠŸΡ€ΠΈ тСстировании прилоТСния ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΈ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ (Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ) Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Release, Ρ‚Π°ΠΊ ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Debug, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ написанноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡˆΠ°Π³Π°ΠΌ.

Рисунок 3.1 — Π Π°Π±ΠΎΡ‡Π΅Π΅ ΠΎΠΊΠ½ΠΎ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ C++ Builder Embarcadero.

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

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ основного Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Image. Π£ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° имССтся свойство — Canvas, Ρ‚. Π΅. ΠΊΠ°Π½Π²Π° ΠΈΠ»ΠΈ холст. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠ³ΠΎ свойства ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Image прСдставляСт собой холст, Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Paint. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π² Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ изобраТСния, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π²Π΅Ρ‚ Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ нарисованныС элСмСнты Π² ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹, Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹. Π’ Π΄Π°Π½Π½Ρ‹ΠΉ холст Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ Π±Π»Π°Π½ΠΊ с ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ рукописным тСкстом. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π°Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ этого Π±Π»Π°Π½ΠΊΠ°, поэтому всС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ символов Π΅ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ извСстны. Зная, Ρ‡Ρ‚ΠΎ Ρ„ΠΎΠ½ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ символа Π±Π΅Π»Ρ‹ΠΉ, Π° Ρ†Π²Π΅Ρ‚ тСкста синий ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ, Ρ‚ΠΎ ΠΏΠΎ Π°Π½Π°Π»ΠΈΠ·Ρƒ Ρ†Π²Π΅Ρ‚Π° пиксСлСй Π»Π΅Π³ΠΊΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ написанного символа. Π”Π°Π»Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ, описанный Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 2.

Для добавлСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Image Π² ΠΏΡ€Π°Π²ΠΎΠΉ части C++ Builder имССтся панСль — Tool Pallete. Π’ Π½Π΅ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ ΠΈ ΠΎΡ‚сортированы ΠΏΠΎ ΡΠ²ΠΈΡ‚ΠΊΠ°ΠΌ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π’Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Ρ‚ свиток — Additional. Π Π°Π·Π²Π΅Ρ€Π½ΡƒΠ² Π΅Π³ΠΎ, Π² Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ искомый ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Image ΠΈ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ.

Π‘Π»Π΅Π²Π° Π²Π½ΠΈΠ·Ρƒ располагаСтся мСню свойств Π½Π° Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π΄Π΅Π»Π΅Π½ ΠΌΡ‹ΡˆΡŒΡŽ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅. Π’Ρ‹Π΄Π΅Π»ΠΈΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Image Π·Π°Π΄Π°Π΄ΠΈΠΌ Π² ΡΠ²ΠΎΠΉΡΡ‚Π²Π°Ρ… Height ΠΈ Width значСния 330 ΠΈ 490 соотвСтствСнно. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° Image Ρƒ Π½Π°Ρ сСрый. Но ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ свойство Canvas Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° Π±Π΅Π»Ρ‹ΠΉ:

Image1->Canvas->Brush->Color=clWhite;

Image1->Canvas->Rectangle (0,0,490,330);

Image1->Canvas->LineTo (250,250);

ПослС этого создадим Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ MS Paint ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ Π±Π»Π°Π½ΠΊ с Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π“ΠΎΡ‚ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±Π»Π°Π½ΠΊΠ° размСстим Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ скомпилированного прилоТСния. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ изобраТСния, ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ Π±Π»Π°Π½ΠΊ с Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3.2. Π Π°Π·ΠΌΠ΅Ρ€ изобраТСния совпадаСт с ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Image, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅.

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° Π±Π»Π°Π½ΠΊΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Ρ†ΠΈΡ„Ρ€Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ с ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π³ΠΎΠ΄. Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ поля для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ 40*50 Ρ‚ΠΎΡ‡Π΅ΠΊ. РасстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ областями ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ составляСт 40 Ρ‚ΠΎΡ‡Π΅ΠΊ. Π—Π½Π°Π½ΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ располоТСния Π΄Π°Π½Π½Ρ‹Ρ… областСй Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

Π”Π°Π½Π½Ρ‹Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΡΡ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… символов. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ каркас всСх символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ находится Π² ΠΏΠΎΠ»ΡΡ…. Как Π±Ρ‹Π»ΠΎ условлСно Π²Ρ‹ΡˆΠ΅, создадим массив ΠΈΠ· ΠΊΠ°Ρ€ΠΊΠ°ΡΠΎΠ² Ρ†ΠΈΡ„Ρ€ ΠΎΡ‚ 0 Π΄ΠΎ 9.

Рисунок 3.2 — Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ поля Π² ΠΏΠ΅Ρ‡Π°Ρ‚Π½ΠΎΠΌ Π±Π»Π°Π½ΠΊΠ΅ Для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ изобраТСния Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Image Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Button. Π’ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ события наТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ напишСм ΠΊΠΎΠ΄ (здСсь с ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ариями):

Graphics:TBitmap *bitmap=new Graphics: TBitmap;

bitmap->LoadFromFile («blank.bmp»); //Π—Π°Π³Ρ€ΡƒΠ·ΠΈΠ»ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

Image1->Canvas->Draw (0,0,bitmap); //Π’Ρ‹Π²Π΅Π»ΠΈ Π½Π° ΠΊΠ°Π½Π²Ρƒ Ρ„ΠΎΡ€ΠΌΡ‹ Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ (0,0).

delete bitmap; //Освободили ΠΏΠ°ΠΌΡΡ‚ΡŒ Для работоспособности Π΄Π°Π½Π½ΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Π»Π°Π½ΠΊ Π±Ρ‹Π» ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ с ΠΈΠΌΠ΅Π½Π΅ΠΌ blank ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ bmp. А Ρ‚Π°ΠΊ ΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» находился Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ с ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ каркасов для всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… символов. ΠšΠ°Ρ€ΠΊΠ°ΡΡ‹ ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΠΈ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ символа ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3.3.

Рисунок 3.3 — ΠšΠ°Ρ€ΠΊΠ°ΡΡ‹ распознаваСмых символов Анализ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ сСгмСнтарно (ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Ρ‹, ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΠ΅ Π΅Π³ΠΎ каркас) анализируя Ρ„ΠΎΡ€ΠΌΡƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ΅ΠΉΡΡ Π»ΠΈΠ½ΠΈΠΈ с Π·Π°Π΄Π°Π½Π½ΠΎΠΉ, Π»ΠΈΠ±ΠΎ ΠΏΠΎ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ подобия, которая образуСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΈΠ· ΠΊΠ°Ρ€ΠΊΠ°ΡΠΎΠ². Π˜Π·ΠΎΠ±Ρ€Π°Π·ΠΈΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ числа «2».

Рисунок 3.4 — Π Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ области символа Π½Π° Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ сСктора Π’. Π΅. Ρ‡Π΅ΠΌ большС рукописных Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… Π² Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ сСктор, Ρ‚Π΅ΠΌ большС Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ написан Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ символ. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ числа Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΡƒΡŽ структуру, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚:

  • — ΠΌΠ°ΡΡΠΈΠ² Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡ‹Ρ… сСкторов;
  • — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… состоит каркас.

Π‘Ρ€Π°Π·Ρƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ сСкторов. Вспомним, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ области, ΠΎΡ‚Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ символ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ 40*50 Ρ‚ΠΎΡ‡Π΅ΠΊ. Π’ΠΎΠ³Π΄Π° условно ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΎΠ΄Π½ΠΎΠ³ΠΎ сСктора Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ 10*10 Ρ‚ΠΎΡ‡Π΅ΠΊ. ΠžΠ±Ρ‰Π΅Π΅ количСство сСкторов для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ области Π² Ρ‚Π°ΠΊΠΎΠΌ случаС составит 20. Π‘Ρ‡Π΅Ρ‚ сСкторов Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ Π²Π΅Π΄Π΅ΠΌ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ ΠΈ ΡΠ²Π΅Ρ€Ρ…Ρƒ Π²Π½ΠΈΠ· ΠΎΡ‚ 0 Π΄ΠΎ 19-Ρ‚ΠΈ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ структуру с ΠΈΠΌΠ΅Π½Π΅ΠΌ S_carcas:

typedef struct.

{.

int sectors[20];

int points;

int scnt;

}S_carcas;

Π—Π΄Π΅ΡΡŒ пСрСмСнная Ρ‚ΠΈΠΏΠ° int sectors[20] ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΌΠ°ΡΡΠΈΠ² сСкторов Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ области. Если Ρ‚ΠΎΡ‡ΠΊΠΈ каркаса эталонного символа входят Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ сСктора i, Ρ‚ΠΎΠ³Π΄Π° пСрСмСнная sectors[i] Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС — 0. Int scnt — ΠΎΠ±Ρ‰Π΅Π΅ количСство сСкторов, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ эталонным символом.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ points описываСт ΠΎΠ±Ρ‰Π΅Π΅ количСство Ρ‚ΠΎΡ‡Π΅ΠΊ, входящих Π² ΠΊΠ°Ρ€ΠΊΠ°Ρ. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ массив структуры для всСх символов ΠΎΡ‚ 0 Π΄ΠΎ 9-Ρ‚ΠΈ:

S_carcas etalon[10];

Π’Π΅ΠΏΠ΅Ρ€ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ эталонного символа ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ структуру. Π‘Ρ€Π°Π·Ρƒ запишСм сСктора, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ эталонного символа.

Для «0»: сСктора 1,2,5,6,9,10,13,14,17,18.

Для «1»: сСктора 2,5,6,10,14,17,18.

Для «2»: сСктора 1,2,6,9,10,13,17,18.

Для «3»: сСктора 1,2,6,9,10,14,17,18.

Для «4»: сСктора 5,6,9,10,14,18.

Для «5»: сСктора 1,2,5,9,10,14,17,18.

Для «6»: сСктора 1,2,5,9,13,14,17,18.

Для «7»: сСктора 1,2,6,10,14,18.

Для «8»: сСктора 1,2,5,6,9,10,13,14,17,18.

Для «9»: сСктора 1,2,5,6,9,10,14,17,18.

Π—Π°ΠΌΠ΅Ρ‡Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ†ΠΈΡ„Ρ€Π° «8» Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Π΅ ΠΆΠ΅ ΡΠ΅ΠΊΡ‚ΠΎΡ€Π°, Ρ‡Ρ‚ΠΎ ΠΈ Ρ‡ΠΈΡΠ»ΠΎ «0». Π’ ΡΡ‚ΠΎΠΌ случаС ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ число сСкторов (Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ области символов Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ участки), Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²Π΅Ρ€Π½Ρ‹ΠΉ символ опрСдСлится Π±Π΅Π· ошибок с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ†Π΅Π½ΠΊΠΈ вСроятности соотвСтствия.

Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ структур для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа осущСствляСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ void fill_struct (). Код Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ довольно Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ, поэтому для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ структуры для числа «0»:

etalon[0]. sectors[0] = 0;

etalon[0]. sectors[1] = 1;

etalon[0]. sectors[2] = 1;

etalon[0]. sectors[3] = 0;

etalon[0]. sectors[4] = 0;

etalon[0]. sectors[5] = 1;

etalon[0]. sectors[6] = 1;

etalon[0]. sectors[7] = 0;

etalon[0]. sectors[8] = 0;

etalon[0]. sectors[9] = 1;

etalon[0]. sectors[10] = 1;

etalon[0]. sectors[11] = 0;

etalon[0]. sectors[12] = 0;

etalon[0]. sectors[13] = 1;

etalon[0]. sectors[14] = 1;

etalon[0]. sectors[15] = 0;

etalon[0]. sectors[16] = 0;

etalon[0]. sectors[17] = 1;

etalon[0]. sectors[18] = 1;

etalon[0]. sectors[19] = 0;

etalon[0]. points = 100;

etalon[0]. scnt = 10;

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… рукописных ячССк. Для этого Ρ‚Π°ΠΊΠΆΠ΅ объявим структуры:

typedef struct.

{.

S_sector Cur_sector[20];

int glob_x;

int glob_y;

}S_symbol;

Данная структуры S_symbol содСрТит:

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ структуры S_sector;

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ `x' Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ области символа;

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ `y' Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ области символа.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ Image координатная прямая X Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π° слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ, Π° Y — свСрху Π²Π½ΠΈΠ·. Π’. Π΅. Π½Π°Ρ‡Π°Π»ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ Π»Π΅Π²ΠΎΠΌ ΡƒΠ³Π»Ρƒ холста.

ВлоТСнная структура S_sector описываСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· 20-Ρ‚ΠΈ сСкторов, присущих Π΄Π°Π½Π½ΠΎΠΉ области:

typedef struct.

{.

int cheked; //1 — Ссли Π² ΡΠ΅ΠΊΡ‚ΠΎΡ€Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Ρ‚ΠΎΡ‡ΠΊΠΈ.

int num_points; //ΠΎΠ±Ρ‰Π΅Π΅ количСство Ρ‚ΠΎΡ‡Π΅ΠΊ Π² ΡΠ΅ΠΊΡ‚ΠΎΡ€Π΅.

int sector_x; // ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° x Π½Π°Ρ‡Π°Π»Π° сСктора.

int sector_y; // ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° y Π½Π°Ρ‡Π°Π»Π° сСктора.

}S_sector;

Из ΠΎΠ±Ρ€Π°Π·Ρ†Π° Π±Π»Π°Π½ΠΊΠ° слСдуСт, Ρ‡Ρ‚ΠΎ количСство всСх областСй Ρ€Π°Π²Π½ΠΎ 8, поэтому ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ символа Π½ΡƒΠΆΠ½ΠΎ массивом:

S_symbol symbol[8];

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… рукописных ячССк. Для этого Ρ‚Π°ΠΊΠΆΠ΅ объявим структуры:

Π—Π° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ структуры областСй символов ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ функция fill_symbols (). Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ областСй ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСктора, входящСго Π² ΡΠΎΡΡ‚Π°Π² Π΄Π°Π½Π½ΠΎΠΉ области.

Ѐункция ΠΈΠΌΠ΅Π΅Ρ‚ Ρ†ΠΈΠΊΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ происходит вычислСниС ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². Π’ ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа выполняСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ» для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ΅ΠΊΡ‚ΠΎΡ€Π°. Π’Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ располоТСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² для Π΄Π°Π½Π½ΠΎΠΉ области.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ cΡ… ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΡΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅, ΠΈΠ»ΠΈ Π½ΠΎΠΌΠ΅Ρ€ ряда, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ располагаСтся ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ сСктор. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ряду Ρƒ Π½Π°Ρ имССтся ΠΏΠΎ 4 сСктора, Π·Π½Π°Ρ‡ΠΈΡ‚ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° полоТСния ΠΏΠΎ ΠΎΡΠΈ `y' смСщаСтся Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 4 сСктора.

void fill_symbols ().

{.

int i = 0;

int k = 0;

int cx;

for (i = 0; i < 8; i++) //для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа выполняСм.

{.

symbol[i]. glob_x = 0+i*50; //вычисляСм ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ области x.

if (i>3) //Ссли порядковый Π½ΠΎΠΌΠ΅Ρ€ символа большС 3-Ρ…, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ.

//Π½Π° Π½ΠΎΠ²ΡƒΡŽ строку (это Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Ρ€ΠΈΡΡƒΠ½ΠΊΠ° Π±Π»Π°Π½ΠΊΠ°).

{.

symbol[i]. glob_y = 60;

}.

else.

{.

symbol[i]. glob_y = 0;

}.

for (k = 0; k < 20; k++) //для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСктора.

{.

cx = k/4; //число ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… строк.

symbol[i]. Cur_sector[k].sector_x = symbol[i]. glob_x + k*10−40*cx;

symbol[i]. Cur_sector[k].sector_y = symbol[i]. glob_y + (k/4)*10;

}.

}.

}.

Π€ΡƒΠ½ΠΊΡ†ΠΈΡŽ fill_sectors () Ρ‚Π°ΠΊΠΆΠ΅ стоит Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Ρ‚Π΅Π»ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ загруТаСтся ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±Π»Π°Π½ΠΊΠ°.

ПослС заполнСния всСх структур ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡ ΠΈΡ… Ρ ΡΡ‚Π°Π»ΠΎΠ½Π½Ρ‹ΠΌΠΈ.

Π—Π°ΠΏΠΈΡˆΠ΅ΠΌ ΠΎΠ±Ρ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для процСсса нахоТдСния Ρ‚ΠΎΡ‡Π΅ΠΊ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ сСктора:

void comp_sector (int pos, int number).

{.

int xs;

int ys;

int cur_x = symbol[pos]. Cur_sector[number].sector_x;

int cur_y = symbol[pos]. Cur_sector[number].sector_y;

TColor col;

int p_count = 0;

for (ys = cur_y; ys < cur_y+10; ys++).

{.

for (xs = cur_x; xs < cur_x+10; xs++).

{.

Form1->ListBox1->Items->Add (IntToStr (xs));

col = Form1->Image1->Canvas->Pixels[xs][ys];

if (col ≠ clBlack && col ≠ clWhite).

{.

p_count = p_count+1;

}.

}.

}.

symbol[pos]. Cur_sector[number].num_points = p_count;

if (p_count>0).

{.

symbol[pos]. Cur_sector[number].cheked = 1;

}.

}.

Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ ΠΎΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ сСктора. И Π΅ΡΠ»ΠΈ Π² Π½Π΅ΠΌ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ нарисованныС пиксСли, Ρ‚ΠΎΠ³Π΄Π° Π² ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ заносится количСство этих Ρ‚ΠΎΡ‡Π΅ΠΊ (p_count), ΠΈ Π΅ΡΠ»ΠΈ это количСство Π½Π΅ Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠ»ΡŽ (Ρ‚.Π΅. сСктор Π½Π΅ ΠΏΡƒΡΡ‚ΠΎΠΉ), устанавливаСм Ρ„Π»Π°Π³ checked = 1.

ΠŸΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ строку (4 символа) На Ρ„ΠΎΡ€ΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ, которая нСпосрСдствСнно Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° ΠΏΡ€ΠΎΡ†Π΅ΡΡ прСобразования. Код ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

int m;

float f;

float res=0;

int num_seek=0;

float* pf;

float a, b;

int i;

int k;

for (i = 0; i < 4; i++).

{.

compare (i);

for (k=0; k<10;k++).

{.

m = check_num (i, k);

pf=(float*)&m;

a=*pf;

pf=(float*)&etalon[k]. points;

b = *pf;

f=a/b;

if (f>res).

{.

res = f;

num_seek=k;

}.

}.

Form1->ListBox1->Items->Add (IntToStr (num_seek));

}.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ i ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π² Ρ†ΠΈΠΊΠ»Π΅ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ символ (Ρƒ Π½Π°Ρ ΠΈΡ… 4 Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС). Π—Π°Ρ‚Π΅ΠΌ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ m ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ся ΠΎΠ±Ρ‰Π΅Π΅ количСство Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· 10-Ρ‚ΠΈ эталонных символов. ПослС этого Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ количСства Ρ‚ΠΎΡ‡Π΅ΠΊ, ΡΠΎΠ²ΠΏΠ°Π²ΡˆΠΈΡ… Π² ΠΎΠ±Ρ‰ΠΈΡ… сСкторах, ΠΊ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ количСству Ρ‚ΠΎΡ‡Π΅ΠΊ эталонной Ρ„ΠΈΠ³ΡƒΡ€Ρ‹.

На Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ListBox1. Π’ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° послС прСобразования ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ символа записываСтся Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²ΡˆΠΈΠΉΡΡ символ. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΡΡ‚Π°ΠΏΠ΅ выполнСния ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ Π²ΠΈΠ΄ ΠΊΠ°ΠΊ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3.5:

Рисунок 3.5 — Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ распознавания тСкста Как Π²ΠΈΠ΄ΠΈΠΌ, Π² Π»ΠΈΡΡ‚ справа записалось 4 значСния — 1,2,1,2. Π§Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ числу 1212. Однако Π½Π° Π±Π»Π°Π½ΠΊΠ΅ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС Π²Π²Π΅Π΄Π΅Π½ΠΎ число 1912. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ число 9 Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π»ΠΎΡΡŒ ΠΊΠ°ΠΊ 2. Π’ ΡΡ‚ΠΎΠΌ кроСтся нСдостаток использования Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΌΡƒ сСкторов. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΡ€ΠΈ распознавании ΠΈ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠ΅ тСкста ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа сразу. По ΠΈΡ‚ΠΎΠ³Π°ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сопоставлСний выбираСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ высокая общая Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ