|
1 / 1 / 0
Регистрация: 30.11.2009
Сообщений: 54
|
|||||||||||
Распознавание образов30.11.2009, 14:27. Показов 21122. Ответов 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
Распознавание образов Распознавание образов
Распознавание образов Распознавание образов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|