roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 09:56

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Выделение и распознавание автомобильного номерного знака
СообщениеДобавлено: 06 июн 2009, 10:38 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
РЭНТ писал(а):
Нашел ошибку из за которого не получалось вывести изображение...

Мог бы ты выложить свой проект как рабочий пример и написать что и где надо скачать и установить на ПК - я этим не занимался и не понимаю ни чего, но хотелось бы попробовать. Наверно и многим еще захочется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выделение и распознавание автомобильного номерного знака
СообщениеДобавлено: 06 июн 2009, 20:55 
Не в сети
Аватара пользователя

Зарегистрирован: 02 июн 2009, 21:56
Сообщения: 14
Откуда: Воронеж
прог. языки: Pascal, C++, Max Scripting
ФИО: Артем Проскурин
2avr123.nm.ru я пока просто разбираюсь с функциями OpenCV, как только напишу хотя бы основу обязательно выложу исходники)
Почитать про OpenCV можно здесь http://imageprocessing.su/?cat=3 там же можно найти и ссылку на скачивание)
Про установку и настройку я писал в этой ветки форума, в конце viewtopic.php?f=51&t=6066


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выделение и распознавание автомобильного номерного знака
СообщениеДобавлено: 06 июн 2009, 21:03 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Спасибо. Почитать то много где есть и на робофоруме тоже. Я подожду проектика "с жару с пылу" чтоб запустить и вопросы задать автору пока не убег :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выделение и распознавание автомобильного номерного знака
СообщениеДобавлено: 09 июн 2009, 20:23 
Не в сети
Аватара пользователя

Зарегистрирован: 02 июн 2009, 21:56
Сообщения: 14
Откуда: Воронеж
прог. языки: Pascal, C++, Max Scripting
ФИО: Артем Проскурин
Народ подскажите!)Взял из samples пример по распознаванию прямоугольников на фото...понравился он мне) В принципе номерной знак он обводит без проблем, но вот беда, он еще кое какие предметы прямоугольные обводит(например фары..и т.д.). Решил следующим шагом брать каждый найденный прямоугольник, бинаризовать его(т.е. переводить в ч/б, например функцией cvThreshold) и анализировать на количество белого цвета(таким образом хочу отбраковать все прямоугольники которые не номерной знак)
Итак вопрос!):
1. Как можно обращаться к бинаризованному изображению попиксельно?...никак не могу въехать(
2. Прямоугольники, которые были получены, хранятся в CvSeq*.Как можно вывести изображение находящееся в области прямоугольника?
Вот пример моей реализации...но там всплыла куча подводных камней...может есть какие-то стандартные функции для этого?

Код:
void SearchNumber( IplImage* img, CvSeq* squares ) // CvSeq хранит данные о контуре
{
   char* NameWnd2 = "Nomer";
   cvNamedWindow( "Nomer", CV_WINDOW_AUTOSIZE );
    CvSeqReader reader;
    IplImage* cpy = cvCloneImage( img );
    int i,j;
   CvPoint pt1;
   CvFont font;
   CvSize text_size;
   pt1.x = 100;
   pt1.y = 100;
   cvInitFont( &font, CV_FONT_HERSHEY_COMPLEX, 0.5, 0.5, 0.0, 0, CV_AA );
   cvGetTextSize( "1", &font, &text_size, 0 );
    // initialize reader of the sequence
    cvStartReadSeq( squares, &reader, 0 );
  //  cvSeqRemove( squares, 10);
    // читать 4 последовательности элементов (все вершины)
    for( i = 0; i < squares->total; i += 4 )
    {
        CvPoint pt[4], *rect = pt; // Массив точем массива контура
        int count = 4;
       
        // Читать 4 вершины
        CV_READ_SEQ_ELEM( pt[0], reader ); //
        CV_READ_SEQ_ELEM( pt[1], reader ); // Считывание точек вершин
        CV_READ_SEQ_ELEM( pt[2], reader ); //
        CV_READ_SEQ_ELEM( pt[3], reader ); //
       
//Поиск вершин по которым будут строится новый квадрат изображения
      int c,gip,max,min;
      max=0;
      min=10000;
      CvPoint MaxPoint;
      CvPoint MinPoint;
      MaxPoint.x=1; MaxPoint.y=1;
      MinPoint.x=1; MinPoint.y=1;

////Далее собсно идет мой алгоритм поиска двух вершин по которым будет строится область ROI ....
////Алгоритм крив и косячен до ужоса >_<   Может есть какая-то функция заменяющая весь этот ужс???)

           for( j=0; j<4; j++ )
         {         
             gip= (int)sqrt ((double)((pt[j].x)*(pt[j].x)+(pt[j].y)*(pt[j].y)));

               if ((gip > max)&&((pt[j].y)>(MaxPoint.y)))
            {
               max = gip;
               MaxPoint = pt[j];
            }

            if ((gip < min)&&((pt[j].y)<(MaxPoint.y)))
            {
               min = gip;
               MinPoint = pt[j];
            }
            printf("(%d,%d)\n", pt[j].x, pt[j].y );
            printf("Gipotinuza =   %d,\n",gip);
        }

          printf("MaX =  %d,%d\n",MaxPoint.x,MaxPoint.y);
                printf("MiN =  %d,%d\n",MinPoint.x,MinPoint.y);

         cvSetImageROI(img, cvRect(MinPoint.x,MinPoint.y,MaxPoint.x,MaxPoint.y));

                         ////Запись квадрата в память как JPG вайл
            char buffer[50];                                         
            itoa(i,buffer,10);       
            strcat(buffer,".jpg");
            printf("Imia Faila: %s\n", buffer);   
             if(!cvSaveImage(buffer, img))     
             {
               printf("Невозможно записать файл изображения\n");
             }

         cvShowImage( NameWnd2, img );
         cvResetImageROI(img);

          printf("************************\n");
   
         /////Вывод номеров вершин
         for( j=0; j<4; j++ )
         {         
         char buffer[50];                                         
         itoa(j+1,buffer,10);       
         cvPutText(cpy, buffer, pt[j], &font, CV_RGB(255,1,1));
         }
   }

    // Вывод изображения
    cvShowImage( wndname, cpy );
    cvReleaseImage( &cpy ); //Освобождение памяти
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выделение и распознавание автомобильного номерного знака
СообщениеДобавлено: 10 июн 2009, 23:30 
Не в сети
Аватара пользователя

Зарегистрирован: 02 июн 2009, 21:56
Сообщения: 14
Откуда: Воронеж
прог. языки: Pascal, C++, Max Scripting
ФИО: Артем Проскурин
Хех...видимо никто не знает...хех..жалко(((


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выделение и распознавание автомобильного номерного знака
СообщениеДобавлено: 14 июн 2009, 11:44 
Не в сети
Аватара пользователя

Зарегистрирован: 02 июн 2009, 21:56
Сообщения: 14
Откуда: Воронеж
прог. языки: Pascal, C++, Max Scripting
ФИО: Артем Проскурин
С прошлой батвой вродь разобрался :)

Подскажите народ, понимаю что вопрос избитый, но что-то ничего не помагет...

Получаю путь к файлу через:
CString fname;
fname = dlgOpen.GetPathName();

Как CString перевести в char* ???


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выделение и распознавание автомобильного номерного знака
СообщениеДобавлено: 15 июн 2009, 10:23 
Не в сети

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
Подозреваю, что должен быть метод типа .c_str(), как у стандартных STL-евских строк.

Гугл считает, что CString - это такие дамские трусы :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выделение и распознавание автомобильного номерного знака
СообщениеДобавлено: 15 июн 2009, 11:43 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
:lol: :lol: :ROFL: :ROFL: :D

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выделение и распознавание автомобильного номерного знака
СообщениеДобавлено: 15 июн 2009, 12:02 
Не в сети
Аватара пользователя

Зарегистрирован: 27 ноя 2004, 00:42
Сообщения: 3339
Откуда: совсем Москва
ФИО: Григорий
:good: :D
Почитал - порадовался :)

_________________
злой полицейский


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выделение и распознавание автомобильного номерного знака
СообщениеДобавлено: 15 июн 2009, 18:16 
Не в сети
Аватара пользователя

Зарегистрирован: 02 июн 2009, 21:56
Сообщения: 14
Откуда: Воронеж
прог. языки: Pascal, C++, Max Scripting
ФИО: Артем Проскурин
> Гугл считает, что CString - это такие дамские трусы :)

))) :D Чиво смеетесь?)) Есь ток начинаю на Сях кодить что уж поделаешь... вот и вопросы такие.. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выделение и распознавание автомобильного номерного знака
СообщениеДобавлено: 15 июн 2009, 18:59 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
Дамские трусы это c-string :D

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO