Технический форум по робототехнике.
РЭНТ » 03 июн 2009, 23:03
Привет народ!)
Начал разбираться в OpenCV но знаний пока недостаточно для реализации данной программы. Может быть подскажите в каком примерно направлении двигаться, какие функции удобнее использовать для решения данной проблемы...в общем буду рад любой помощи)
До того как начал разбираться с OpenCV пытался реализовать все это стандартными WinApi функциями...но производительность даже при попиксельном переводе в двухцветное изображение оставляет желать лучшего(
Сам думал реализовать это так:
1. Перевести фотографию в двухцветное ч/б изобразение
2. Разбить изображение на небольшие квадраты и каждый просканировать на наличие чего-то похожего на символы (используя заранее обученную нейросеть, методом обратного распространения ошибки) отметить все квадраты в которых символы есть
3. В отмеченных квадратах выделить прямоугольную область(номерной знак)
4. Распознавание символов в квадрате
Велосипед я наверное придумал шикарный.....
![Pardon :pardon:](http://roboforum.ru/images/smilies/pardon.gif)
avr123.nm.ru » 03 июн 2009, 23:18
Наверняка на сайте MATLAB есть примеры.
MiBBiM » 04 июн 2009, 14:22
у наших гаишников такое есть, а у заграничных и подавно. если не секрет, то применительно к какой области разрабатываете, автомагистрали, стоянки, перекрестки или нечто другое?
РЭНТ » 04 июн 2009, 15:02
Конечно не секрет) Просто робототехникой давно увлекаюсь, сейчас подоспело время дипломов и я решил взять себе тему по распознаванию изображений, долго ломал себе голову применительно к какой области можно сделать пример, программную разработку, ну и пришел к данной теме) И востребованность на защите будет легко доказать и мне интересно с такой работой возиться, как говорится лишний грамм мозгов никогда не помешает
2avr123.nm.ru Большое спасибо за подсказку, там действительно много полезной информации, изучаю) Но конкретно под мою задачу пока не нашел...
Кстати, народ подскажите, вродь все компилится...к примеру вот такой код:
- Код: Выделить всё • Развернуть
#include "stdafx.h"
#include "highgui.h"
int _tmain(int argc, _TCHAR* argv[])
{
IplImage* img = cvLoadImage("BlonD.jpg",1);
cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE);
cvShowImage("Exemple1",img);
printf("FUUUFUUFUFUFUUFUUFUFUU\n");
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("Example1");
return 0;
}
Но окно почему-то не отображает загружаемый рисунок...просто серым закрашивает и всё...((( Может подскажите как быть?
Модератор vooon:А еще лучше указывать язык для тега [code=cpp]
автоопределение отвалилось...
Последний раз редактировалось
Vooon 04 июн 2009, 18:03, всего редактировалось 2 раз(а).
Причина: тег [CODE] - хорошая штука!
MiBBiM » 04 июн 2009, 15:15
эм, имеет ввиду что с этими распознанными знаками делать? скорость подсчитывать и лихачей штрафовать или важно направление движения знака, для создания системы регистрации на стоянках?
РЭНТ » 04 июн 2009, 15:38
Ды нет, таких задач я не ставил, просто распознавание номера и поиск его по БД)
contr » 04 июн 2009, 15:59
Можно FineReader задействовать. Написать к нему батник для загрузки, распознавания и сохранения. Распознает он хорошо, а извлечь из распознанного номера - не проблема
boez » 04 июн 2009, 16:16
Вот сильно я сомневаюсь, что файнридер с таким справится. Его задача - выделять картинки на фоне текста и потом текст распознавать, а картинки сохранять так. А тут надо выделить текст на фоне картинки...
contr » 04 июн 2009, 19:22
Не, я пробовал. Текст на фоне картинки он тоже распознает. Как распознавалка, очень мощная прога.
РЭНТ » 04 июн 2009, 21:07
FineReader-это здорово конечно) Забавно будет, приду на защиту диплома и принесу дистрибутив FineReader-а, скажу: "Ну а че!?Все уже написано до нас!)" В том то и вся суть чтобы самому это реализовать. В принципе инфы много нашел, по распознаванию символов, но остановился на распознавании символов шаблонным методом, так же решил реализовать распознавание нейронной сетью...т.к. немного знаком с данной темой)
А распознавание символов шаблонным методом выбрал по следующим причинам:
1. этот метод устойчив к искажению данных, что нередко наблюдается на номерных пластинах в виде теней и грязи;
2. шаблонный метод имеет высокую скорость обработки данных;
3. имеется априорная информация о единственном возможном шрифте;
А вот с алгоритмом поиска номерного знака так и парюсь.С машиной в движении было бы проще,можно было бы определить вектор движения и он бы проходил через середину номерного знака...но хотелось бы именно со статичным изображением реализовать...
Кстать, моя проблема с выводом рисунка в OpenCV так и не решена...(((Подскажите что делать люди добрые...
З.Ы. 2Vooon спасибо, в следующий раз буду обязательно юзать [code=cpp]
![Smile :)](http://roboforum.ru/images/smilies/smile.gif)
contr » 04 июн 2009, 22:58
приду на защиту диплома и...
предупреждать надо
![Sad :(](http://roboforum.ru/images/smilies/sad.gif)
blindman » 05 июн 2009, 05:17
Читать не по диагонали надо
РЭНТ » 05 июн 2009, 22:16
Нашел ошибку из за которого не получалось вывести изображение...ппц...
- Код: Выделить всё • Развернуть
#include "stdafx.h"
#include "highgui.h"
int _tmain(int argc, _TCHAR* argv[])
{
IplImage* img = cvLoadImage("BlonD.jpg",1);
cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE); //ExAmple1!!!!
cvShowImage("Exemple1",img); //ExEmple1!!!! A!=E (((((
printf("FUUUFUUFUFUFUUFUUFUFUU\n");
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("Example1");
return 0;
}
Я даже и не думал что ошибка может быть такой глупой!
![Sad :(](http://roboforum.ru/images/smilies/sad.gif)
Просто вместо "ExAmple1" написал "ExEmple1" через Е ... Бывает же такое...
![Very Happy :D](http://roboforum.ru/images/smilies/biggrin.gif)
=DeaD= » 05 июн 2009, 22:26
Чтобы такого избежать - не делайте в нескольких местах программы одинаковые строки. Сделайте переменную с этой строкой и пользуйте везде. Несовпадение переменной компилятор отловит, а постоянное значение обеспечится тем что это одна и та же переменная.
TrashVigor » 05 июн 2009, 22:49
РЭНТ, тема нужная развивай!