|
1 / 1 / 0
Регистрация: 30.11.2009
Сообщений: 54
|
|||||||||||
Распознавание образов30.11.2009, 14:27. Показов 21059. Ответов 18
Метки нет (Все метки)
Я не акти какой программист.
В общем необходимо написать программу для распознавания образов, т.е. надо загрузить чернобелую картинку с цифрой (белый фон, черная цифра). Программа должна распознать, что это за цифра, если загрузили картинку с цифрой 5, то в Static Text должен появиться текст "Пять" или можно просто "5". В общем кое-что есть и если вы поможете, может быть с вашей помощью получиться что-нибудь сообразить, во всяком случае я на это надеюсь ![]() В принцыпе суть моей проблемы описана на http://dign.narod.ru/ Пример1. Код для вывода изображения на форму:
0
|
|||||||||||
| 30.11.2009, 14:27 | |
|
Ответы с готовыми решениями:
18
srand() и rand() не работают должным образов Распознавание образов распознавание образов |
|
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
|
|
| 30.11.2009, 20:54 | |
|
Подходов - тьма тьмущая. И самый простой и работающий в простых случаях - сравнение по шаблону. Есть шаблон с картинкой пятерочки, прикладываем...не,плохо подходит. И так все прикладываем,пока не найдем. Как-то так. Подход во многом определяется постановкой задачи, которой (четкой) нет.
0
|
|
|
1 / 1 / 0
Регистрация: 30.11.2009
Сообщений: 54
|
|
| 01.12.2009, 02:51 [ТС] | |
|
Это ясно понятно, что подходов тьмя тьмущая. У меня с реализацией проблема. Вот я и выбрал Пример1 на странице http://dign.narod.ru/, там и код описан. Сложность заключается в том, что не совсем получается все эти куски кода объединить вместе.
0
|
|
|
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
|
|
| 01.12.2009, 11:40 | |
|
NAYGER, а,вижу. Ты скопировал приведенные там куски кода друг под друга. Да уж,это непросто было. Не учтено только то,что там - псевдокод. Вот,к примеру,два забавных последствия копипаста.
1. Массив Pixel у тебя вообще не заполнен. Что,интересно,ожидалось? 2. Pixel[X,Y] - это - НЕ пиксель с координатами x,y.
0
|
|
|
1 / 1 / 0
Регистрация: 30.11.2009
Сообщений: 54
|
|||||||
| 01.12.2009, 12:24 [ТС] | |||||||
|
Это понятно, что там написанна не вся программа, а алгоритм. Вот я испрашиваю как отточить эту часть.
А что не так с массивом, я же его вроди бы задал как:
0
|
|||||||
|
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
|
|
| 01.12.2009, 12:28 | |
|
NAYGER, c массивом все не так. Во-первых, синтаксис обращения к элементу двумерного массива такой : Pixel[X][Y]. Но это не все.
Я не знаю,Какая там у тебя битмапа,но пиксель отнюдь не обязан влезать в 8 бит(unsigned char). А вообще этот массив тебе нафиг не нужен. У тебя есть структура BITMAP, в которой есть указатель на массив битов и его характеристики. Я бы на твоем месте написал inline функцию для доступа к нужному пикселю по координатам и этой структуре,а потом использовал бы ее в этих всех условиях.
0
|
|
|
1 / 1 / 0
Регистрация: 30.11.2009
Сообщений: 54
|
||||||
| 01.12.2009, 12:38 [ТС] | ||||||
|
Что-то изобрести новое нет времени, поэтому я отталкиваюсь от того, что есть.
Если я задам массив подругому, то появляются ошибки:
syntax error : missing ';' before identifier 'Pixel' fatal error C1903: unable to recover from previous error(s); stopping compilation или error C2057: expected constant expression error C2466: cannot allocate an array of constant size 0 error C2057: expected constant expression error C2466: cannot allocate an array of constant size 0 error C2087: '<Unknown>' : missing subscript error C2133: 'Pixel' : unknown size
0
|
||||||
|
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
|
|
| 01.12.2009, 12:42 | |
|
NAYGER, ты попытался задать массив черт знает какого размера.
0
|
|
|
1 / 1 / 0
Регистрация: 30.11.2009
Сообщений: 54
|
||||||
| 01.12.2009, 12:51 [ТС] | ||||||
|
Блин я чет так и не пойму, как я задал массив вам не нравится, сделал как вы показали, сного не то
![]() Может покажите тогда, что с этим массивом все-таки сделать надо ![]() Добавлено через 3 минуты
0
|
||||||
|
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
|
||
| 01.12.2009, 12:53 | ||
|
0
|
||
|
1 / 1 / 0
Регистрация: 30.11.2009
Сообщений: 54
|
|
| 01.12.2009, 13:08 [ТС] | |
|
Т.е. не нужен массив
Ненужен в задании - тогда будет куча ошибок, или не нужен вообще - тогда зачем люди его втыкаю везде, что в программе на Delphi(см. выше), что в этом варианте.
0
|
|
|
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
|
|||||||||||||||||
| 01.12.2009, 13:36 | |||||||||||||||||
|
Ладно. И как ты собираешься связывать свой массив и изображение? А что такое изображение? Изображение, в данном случае, само по себе массив. Он уже есть. Зачем его сто раз копировать? Посмотри на поля структуры BITMAP
Дальше все зависит только от фантазии. Можно объявить дополнительный указатель для удобства,как-то так : BYTE * bitsPtr = (BYTE*) Img.bmBits; потом адресовать его примерно так :
Если на пиксель выделен 1 байт или три обработка чуть изменится из-за выравнивания строк. Все эти страшные подсчеты адресов неплохо бы спрятать в класс или inline функции на худой конец. Да,времени читать код на дельфи у меня нет,я ухожу уже. Но,на сколько я вижу,там используется приятное предположение,что на пиксель приходится один байт. А это совершенно не обязательное условие.Я бы даже сказал, оно крайне редко выполняется. P.S на мой код из этого поста опираться не советую,он тоже "псевдо". Наверняка забыл что-нибудь P.P.S Не советую заморачиваться со всеми возможными кол-вами бит на пиксель. Посмотри,какие у тебя изображения на вход, посмотри сколько там бит на пиксель и для них и кодируй. В универсальности закопаешься. Так что если достаточно просто сдать - упрости себе этот момент.
0
|
|||||||||||||||||
|
1 / 1 / 0
Регистрация: 30.11.2009
Сообщений: 54
|
|
| 01.12.2009, 14:26 [ТС] | |
|
Т.е. представленный мной код из Примера1, можно смело бросать в корзину?
0
|
|
|
1 / 1 / 0
Регистрация: 30.11.2009
Сообщений: 54
|
|
| 01.12.2009, 15:22 [ТС] | |
|
Вот гадство все исходники программ по распознаванию написанны на Delphi
![]() Вот нашел программу которая решает полностью суть моей проблемы, но она всего лишь демка, т.е. без кода.
0
|
|
|
1 / 1 / 0
Регистрация: 30.11.2009
Сообщений: 54
|
|||||||||||
| 02.12.2009, 07:17 [ТС] | |||||||||||
|
А если забить на тот Пример1, и сделать по новой как-нибудь так:
По пиксельная запись матрицы изображения в файл построчно Допустим есть изображение размером 8Х9 пикселей Двойка: 00000000 00111100 01100110 00000110 00001100 00011000 00110000 01111110 00000000 MAT[8][9] K=1 - черный пиксель, L=0 - белый пиксель
0000000000111100011001100000011000001100 00011000001100000111111000000000 Распознавание изображения
0
|
|||||||||||
|
DreamTime
|
||
| 02.12.2009, 22:36 | ||
0000000000111100011001100000011000001100 0001100000 1100000111111000000000 Сравниваем либо в лоб перебором полученную комбинацию из файла с комбинацией из шаблонов-массивов, при совпадении выводим на экран цифру, соответствующую для совпавшего массива, если совпадения нет, то так и напишем ![]() Для начала хватит.. потом можно модифицировать алгоритм для производительности. Добавлено через 11 минут Для единицы заготовим такой массив: 00000000 00011000 00111000 00011000 00011000 00011000 00011000 00111100 00000000 Для простоты мы будем представлять массив в качестве строчки 0000000000011000001110000001100000011000 00011000000110000011110000000000 Для двойки такой массив: 0000000000111100011001100000011000001100 0001100000 1100000111111000000000 и так далее.. |
||
|
1 / 1 / 0
Регистрация: 30.11.2009
Сообщений: 54
|
||||||||||||
| 03.12.2009, 07:41 [ТС] | ||||||||||||
|
Значит мой вариант имеет место быть?
![]()
У меня проблема заключается в том как это реализовать программно? Нарыл на форуме, как загнать BMP изображение в массив: Код1
MAT[y][x] В моем с лучае это координата пикселя: MAT[0][0] MAT[0][1] MAT[0][2] MAT[0][3] ... MAT[0][n] MAT[1][0] MAT[1][1] MAT[1][2] MAT[1][3] ... MAT[1][n] ... MAT[m][0] MAT[m][1] MAT[m][2] MAT[m][3] ... MAT[m][n] Код2
0
|
||||||||||||
|
DreamTime
|
|
| 03.12.2009, 10:53 | |
|
Вот нашел готовую курсовую по распознаванию картинок, прога с исходниками и с описанием
![]() Сам я занимаюсь немного в другой области программирования, поэтому нет возможности уделить должное внимание этой интересной теме. |
|
|
1 / 1 / 0
Регистрация: 30.11.2009
Сообщений: 54
|
|
| 03.12.2009, 11:43 [ТС] | |
|
Спс всем, вроди бы разобрался.
0
|
|
| 03.12.2009, 11:43 | |
|
Помогаю со студенческими работами здесь
19
Распознавание образов Распознавание образов
Распознавание образов Распознавание образов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Рецензия / Мнение/ Перевод
https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs
. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|