| Программирование под linux, программирование, языки программирования, книги программирование | На сайте представлена информация про программирование в Интернете и работу |
|
TBitmap Функция перекрытия двух графических объектов ProgressBar, заставка программы Распознование., см. внутри темы... Перетаскивание картинок с помощью мыши Движение картинок form & thread, непонятки Включение UPGRADE Webbrowser, замена стандартного ИЕ Работа с географической картой. выделить R, G и B компоненты, DirectX series.clear не работает, график очищается не всегда Chart не хочет точку больше 1817, ошибка при передаче ординаты 1818 компонент TRichEdit VRML, Использование VRML Рисунок с анимацией, какими компонентами программный MIDI синтезатор, извлечение нот Оформление интерфейса, не красиво получается... FileListBox, Examplя Как определить битрате файла ? Библиотека типа BASS TBitmap, Незнаю как использовать функцию Совмещение, иконок как просмотреть текущий уровень звука, при помощи TGauge или TProgressBar MP3 BilleniumSoft, полезная вещь Как использовать Флеш или Gif анимацию Как определить цвет BMP-файла?, В определенном углу Bitmep'a... Быстрый доступ к пикселям (в памяти?(как сделать?), TBitmap->Canvas->Pixels[i][j]=... -slow Вопрос по поводу блокировок! плавное усиление громкости, как реализовать? Как записать звук с микрофона Как перетаскивать компоненты в Run-Time? Быстрейшее .., Как быстро вывести рисунок на форму Webbrowser и цвет пикселя, хочу получить цвет... Пишу предпросмотра, Нужна помощь имеющих опыт в этом деле Текст спрайтом, вывод текста без фона Компонены расшифровки файла миди, Где его можно найти?? Графика не выводится на принтер Как Вы относитесь к курящим девушкам? Как получить текст с сообщения?, Нужен исходник! Интересные еффекты, Где найти ? Как поменять цвет ?, ... Условное обозначение железной дороги, Как нарисовать? Как на канве нарисовать жирную пунктирную линию?, Pen.Style=psDot Быстродействие графики, Различия функций отображения Наследование и TBitmap, ООП и графика Надо написать Мега Пеинт, Собственно сабж... извpащаться с битмапом Смена св-в Canvas КАК ПРОИГРАТЬ MP3 ИЗ РЕСУРСА?, Не сохраняя файл на диск!!! Помогите дописать программу..., -= Uninstall Key =- OpenGL: Эффект помехов Хочу нарисовать линию на имаге, есть точка, нет точки, есть точка и т.д. иконки не выкалупываются ПОМОГИТЕ ПОЖАЛУИСТА Помагите сделать ...., ...Еквалайзер Рисунок, Что лучше ???? отключение DirectDrawAcceleration Проблема с медиаплэйером Конвертировать координаты Мерцание картинок, как избавиться? Срочно!!!!! Преобразовать данные из Exel в БД Делф Надо написать Мега Плеер, Собственно сабж glGenTextures - Not found :( Поверхность Безье, Повернуть одну поверхность, а не все!! OpenGL: работа с камерой Запись с микрофона, в мп3 файл, Как это сделать? Как узнать версию DirectX? громкость звука, TMediaPlayer |
Платные хостинги Раскрутка сайта Книги по программированию Распознование., см. внутри темы...
- есть такой компонент Imageдальше по памяти (т.к. Delphi под рукой нету)Код Image.Picture.LoadFormFile(<тут надо написать имя файла>);//работает с bmp-файлами (насчет highlightSyntax('delphiNjEzMT','delphi');открытия jpg поищи, тут где-то вроде обсуждалось)а взять однобитный цвет... ну например так:Код function Get1BitColor(image:TImage;x,y:integer):boolean;begin result:=(image.canvas.pixels[x,y]=0);//true - черный, false - белыйend;highlightSyntax('delphi0NGJkM','delphi');только надо быть уверенным, что закрашенные точки абсолютно черные (все компоненты - нулевые) иначе надо будет писать более (ненамного) интеллектуальную процедуру отсева... - на картнике, можно вообще это на мониторе не показывать, если не надоЦитата (Links @ 18.2.2005, 10:23)2) image.canvas.pixels[x,y]=0 - это что он делает?1. берет объект image2. вытаскивает из него объект canvas (используется в том числе и для работы с пикселями)3. вытаскивает из canvas свойство pixels (попиксельный доступ)4. берет значение пикселя с координатами x,y5. сравнивает его с нулем - а какого они цвета? или какой фон? ведь не обязательно переводить в ч/б... а еще лучше пример картинки приведи... или воспользуйся например нейронной сетью Хемминга... писала правда сама, не оптимизированно, но все же...Код const iDestSize = 10; // размер стороны изображения для распознования, тут сам задай M = 10; // количество классов, т.е. твоих цифер - 0..9 = 10 N = iDestSize*iDestSize; // количество входов e = -(1/m)/2; // вес синапсов второго слояtype TInputNeuron = record fW: array [0..N-1] of real; // весовые коэфициенты синапсов fOutput: real; // выход end; TNeuron = record fOutput: real; // выход fSum: real; // взвешанная сумма входов end;var InputRow: array [0..M-1] of TInputNeuron; // 1 слой SecondRow: array [0..M-1] of TNeuron; // 2 слойhighlightSyntax('delphiyM2JlY','delphi');обучение:Код for i := 0 to m-1 do begin //здесь в image1 загружай поочередно твою циферку... for x := 0 to iDestSize-1 do for y := 0 to iDestSize-1 do if Image1.Picture.Bitmap.Canvas.Pixels[x, y] <> RGB(255,255,225) then InputRow[i].fW[x*iDestSize+y] := 0.5 else InputRow[i].fW[x*iDestSize+y] := -0.5; end;highlightSyntax('delphiNDc3OT','delphi');ну а далее распознование:Код var i, j, x, y: integer; fOutputs: array [0..m-1] of real; iCount: integer; fMax: real; iIndex: integer;begin for i := 0 to m-1 do begin InputRow[i].fOutput := 0; for x := 0 to iDestSize-1 do for y := 0 to iDestSize-1 do if Image2.Picture.Bitmap.Canvas.Pixels[x, y] <> RGB(255,255,225) then InputRow[i].fOutput := InputRow[i].fOutput + InputRow[i].fW[x*iDestSize+y] else InputRow[i].fOutput := InputRow[i].fOutput - InputRow[i].fW[x*iDestSize+y]; if InputRow[i].fOutput >= n/2 then InputRow[i].fOutput := n/2; // выход - через ф-ию линейного порога end; (* передаем даные с выходов первого слоя на входы второго и в список результатов предыдушего прохода распознавания (fOutputs) *) for i := 0 to m-1 do begin //fOutputs[i] := InputRow[i].fOutput; SecondRow[i].fOutput := InputRow[i].fOutput; //SecondRow[i].fSum := 0; end; iCount := 0; repeat for i := 0 to m-1 do begin fOutputs[i] := SecondRow[i].fOutput; SecondRow[i].fSum := 0; end; for i := 0 to m-1 do for j := 0 to m-1 do if i = j then SecondRow[j].fSum := SecondRow[j].fSum + SecondRow[i].fOutput else SecondRow[j].fSum := SecondRow[j].fSum + SecondRow[i].fOutput * e; for i := 0 to m-1 do SecondRow[i].fOutput := SecondRow[i].fSum; inc(iCount); until iCount < 25; (* определение выйгравшего нейрона *) fMax := -N; iIndex := -1; for i := 0 to m-1 do if SecondRow[i].fOutput > fMax then begin fMax := SecondRow[i].fOutput; iIndex := i; end; ShowMessage('цифра: '+IntToStr(iIndex));highlightSyntax('delphijYWM2Y','delphi'); - я и привела пример ее релизации, в интернете очень много доков по нейроным сетям.З.Ы.http://www.ic-graphics.net/images/l/Image-01.bmp - будет отлично распозновать, главное чтобы цифры всегда были в одной и той же позиции. - С нейронными сетями дело будет глухо. Необходимо хорошее знание высшей математики, Кроме того, изучение их займёт кучу времени.Действительно, сначала стоит перевести в ч/б картинку, а потом уже распознавать. - Romtekпочему же, по последней картинке видно что автор вполне справился с преобразованием в Ч/Б, ну а дальше пример отлично сработает, если цифру грамотно выделять.а кому интересно, могу сбросить кучи инфы насчет НС, правда в теории только (( |