0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 36

Распознавание автомобильных номеров (Java or C++)

16.04.2016, 21:29. Показов 8184. Ответов 14

Студворк — интернет-сервис помощи студентам
По сабжу, получил тему диплома: Распознавание автомобильных номеров Украины в реальном времени. Язык - предпочтительно java, с++ в крайнем случае так как по нему ну совсем у меня туго(
Порыскав по просторам интернета нашел либы opencv и javaANPR. Просмотрев возможности opencv - понял, что штука мощная, но видеопоток не захватывает (vlcj с той же ссылкой на rtsp хавает). Но подхода как связать opencv и vlcj не нашел. Оpencv не хочет подключатся даже по http к камере. Задача следующая: необходимо кроссплатформенное приложение для работы с IP камерами фирм Hikvision и GreenVision для фирмы, где непосредственно прохожу практику. Может уже кто-то работал с таким. Помогите пожалуйста советом бедному студенту.

Добавлено через 26 минут
В vlcj поток получаю так
Java
1
2
3
4
5
6
7
8
9
10
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:\\Program Files\\VideoLAN\\VLC");
        Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
        JFrame frame = new JFrame("Test");
        mediaPlayerComponent = new EmbeddedMediaListPlayerComponent();
        frame.setContentPane(mediaPlayerComponent);
        frame.setLocation(100, 100);
        frame.setSize(1050, 600);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        mediaPlayerComponent.getMediaPlayer().playMedia("rtsp://admin:12345678q@192.168.1.8:554");
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.04.2016, 21:29
Ответы с готовыми решениями:

Распознавание автомобильных номеров
Здравствуйте, всем! У меня одна просьба не могли бы вы подсказать как написать алгоритм по распознаванию номеров автомашин, на с++, без...

Готовое решение для распознавание автомобильных номеров
Подскажите, где взять готовое решение для определение номера и считывании символов, чтобы можно было встроить в php код? Дипломная...

Заполнение массива значениями автомобильных номеров
Подскажите пожалуйста, как организовать цикл, который сможет по порядку начиная от A000AA, A001AA, ...., A000AB, заканчивая X999XX...

14
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
17.04.2016, 07:09
статья хорошая. может Вы уже знакомы: http://www.ibm.com/developerwo... index.html

Добавлено через 8 минут
https://www.cyberforum.ru/post2927113.html
1
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 36
18.04.2016, 11:18  [ТС]
Спасибо. Да, с этой статьей я уже знаком. С помощью нее, в принципе, и узнал про opencv и javaANPR.

Добавлено через 2 минуты
Есть ли смысл колупать связку java + opencv? Или же есть еще какие-то SDK? Читал еще про javaCV, но у него проблема с совместимостями версий самого javaCV и opencv.
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
18.04.2016, 12:05
я тоже до вчерашнего момента не был знаком, даже не думал об этом... но прочитав Ваш вопрос подумал можно же написать такую программу и интегрировать уже имеющуюся систему... так что за идею Вам спасибо
а на счет Вашего вопроса скорей всего ответят гуру форума, которые уже что то делали в этом направление...
З.Ы. вчера где то читал что из опенсорсев самый нормальный это opencv, только сказали чтоб не смотреть как все это реализована...

Добавлено через 2 минуты
http://gerasimchuk.blogspot.ru/2012/07/javacv.html
0
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 36
18.04.2016, 12:21  [ТС]
Вот аналогичная ситуация. До диплома даже и не задумывался над этим. А практику прохожу в фирме, которая занимается видеонаблюдением.
И на за что за идею. Можно будет как-то скоопироваться :3
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
18.04.2016, 13:57
Цитата Сообщение от kinndzadza Посмотреть сообщение
Можно будет как-то скоопироваться
как Вы представляете это?
0
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 36
18.04.2016, 16:06  [ТС]
Да вот в том то и дело что пока никак.

Добавлено через 15 минут
Есть два варианта построения приложения:
1) Разпознавание номера со скриншота (от той же пикассы);
2) Распознавание номера с видеопотока (что предпочтительней).
Второй вариант заканчивается на том, что не удается подключится к камере. Модели тестовых камер Green Vision GV-004-IP-E-COS14-20 и Hikvision DS-2CD2420F-IW. Нашел ссылку где указаны адреса для подключения, к тому же хику тут. Перепробовал все, что по http. Результата ноль. Прошу помощи

Добавлено через 1 час 3 минуты
Пока получилось следующее: подключится к камере удалось, используя класс FFmpegFrameGrabber. Удалось сделать 100 последовательных снимков с камеры.
Вот код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import org.bytedeco.javacv.*;
import static org.bytedeco.javacpp.opencv_core.*;
import static org.bytedeco.javacpp.opencv_highgui.*;
import static org.bytedeco.javacpp.opencv_imgcodecs.*;
 
public class Main {
 
    public static IplImage image;
 
    public static void main(String[] args) throws FrameGrabber.Exception {
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber("rtsp://admin:12345678q@192.168.1.8:554/Streaming/Channels/1");
        grabber.start();
        OpenCVFrameConverter.ToIplImage converter = new OpenCVFrameConverter.ToIplImage();
int i = 0;
        while(i < 100) {
            ++i;
            image = converter.convert(grabber.grab());
if(image != null) {
                cvSaveImage("capture_" + i + ".jpg", image);
            }
 
        }
 
    }
}
На выходе получаю 100 снимков и небольшой лог, в котором указано вроде о потере пакетов.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[h264 @ 15b4d860] RTP: missed 37 packets
[h264 @ 15b4d860] left block unavailable for requested intra4x4 mode -1 at 0 17
[h264 @ 15b4d860] error while decoding MB 0 17, bytestream 118800
[h264 @ 15b4d860] concealing 6169 DC, 6169 AC, 6169 MV errors in I frame
[h264 @ 15b4d860] RTP: missed 149 packets
[h264 @ 15b4d860] error while decoding MB 22 12, bytestream -18
[h264 @ 15b4d860] concealing 6747 DC, 6747 AC, 6747 MV errors in P frame
[h264 @ 15b4d860] RTP: missed 6 packets
Input #0, rtsp, from 'rtsp://admin:12345678q@192.168.1.8:554/Streaming/Channels/1':
  Metadata:
    title           : Media Presentation
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: h264 (Main), yuv420p, 1920x1080, 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1: Audio: pcm_mulaw, 8000 Hz, 1 channels, s16, 64 kb/s
[h264 @ 15fa5b80] left block unavailable for requested intra4x4 mode -1 at 0 17
[h264 @ 15fa5b80] error while decoding MB 0 17, bytestream 118800
[h264 @ 15fa5b80] concealing 6169 DC, 6169 AC, 6169 MV errors in I frame
[h264 @ 16300160] error while decoding MB 17 12, bytestream -8
[h264 @ 16300160] concealing 6752 DC, 6752 AC, 6752 MV errors in P frame
[h264 @ 16172820] error while decoding MB 41 50, bytestream -6
[h264 @ 16172820] concealing 2168 DC, 2168 AC, 2168 MV errors in P frame
[h264 @ 15b4d860] RTP: missed 7841 packets
[h264 @ 15b4d860] RTP: PT=60: bad cseq 4862 expected=29c1
[h264 @ 15b4d860] RTP: missed 7843 packets
[h264 @ 15b4d860] RTP: PT=60: bad cseq 4864 expected=29c1
[h264 @ 15b4d860] RTP: missed 7844 packets
[h264 @ 16172820] concealing 4821 DC, 4821 AC, 4821 MV errors in P frame
[h264 @ 15b4d860] RTP: missed 16 packets
[h264 @ 16300160] concealing 4958 DC, 4958 AC, 4958 MV errors in P frame
[h264 @ 15b4d860] RTP: missed 37 packets
[h264 @ 15b4d860] RTP: missed 7 packets
[h264 @ 16300160] concealing 3607 DC, 3607 AC, 3607 MV errors in P frame
[h264 @ 15b4d860] RTP: missed 7 packets
[h264 @ 16172820] error while decoding MB 110 51, bytestream -6
[h264 @ 16172820] concealing 1979 DC, 1979 AC, 1979 MV errors in P frame
[h264 @ 15b4d860] RTP: missed 39 packets
[h264 @ 15b4d860] RTP: missed 106 packets
[h264 @ 15b4d860] RTP: missed 97 packets
[h264 @ 16300160] left block unavailable for requested intra4x4 mode -1 at 0 4
[h264 @ 16300160] error while decoding MB 0 4, bytestream 20872
[h264 @ 16300160] concealing 7729 DC, 7729 AC, 7729 MV errors in I frame
Добавлено через 15 минут
Точнее всего 42. Видимо как раз эти потери пакетов. Пока не могу догнать почему
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
18.04.2016, 16:47
обычно на камерах для отдачи видео по сети надо создавать отдельный профиль (у которого будет своя ссылка) и не отдавать видео full hd формата, это не кинотеатр что бы пулять такой поток по сети
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
19.04.2016, 07:40
kinndzadza, как успехи?
0
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 36
19.04.2016, 22:55  [ТС]
Ну пока на этом и остановился. Переговорив еще раз с руководством фирмы - было принято решение распознавать номера со снимков, а не с потока. Так что теперь упор в это. Т.е остается только понять алгоритм распознавания, его построение ну и написать. Плюс насколько я понял нужен список так называемых "белых" (или эталонных) изображений. Может уже у кого-то есть на украинские автомобильные номера?

Добавлено через 13 часов 40 минут
Порысачив по просторам интернета нашел следующее:
На хабре: тык (правда на си-шарп)
и вот такое тык
Единственное что остается - это нахождение области номерного знака средствами opencv (размер заведомо известен благодаря ДСТУ), скрин этого изображения и сохранение его с занесением в БД, обработка этого изображения: бинаризация и т.д для распознавания. Уважаемые софорумники, помогите пожалуйста примерами алгоритмов, буду очень признателен. Так как я новичек в этой области. Максимум с чем работал - это Hibernate, JSP, JPA, JBoss
0
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 36
27.05.2016, 01:28  [ТС]
Спустя долгое время гугления, чтения доков, просмотра примеров, исходников - все же дал старт приложению.
Но, пока застопорился.
Зону номера нахожу каскадом Хаара. Обрезаю интересующую зону и отдаю на обработку (бинаризация и т.д). Проблема следующая. Не всегда ведь номер расположен горизонтально. Часто попадается повернутый.
Вопрос следующий, как обрезать изображение по горизонтальным линиям номера? Гугление в эту сторону только дало названия операций. Как таковых реализаций - не нашел, только на плюсы (внедрить в джаву как-то сложно).
На первом изображении номер еще более-менее приемлемо расположен, а вот на втором, нужно крутить. Угол, на который необходимо повернуть, нужно соответственно рассчитать. Понаходил решения с заранее известным углом.
Миниатюры
Распознавание автомобильных номеров (Java or C++)   Распознавание автомобильных номеров (Java or C++)  
0
90 / 89 / 23
Регистрация: 08.07.2014
Сообщений: 548
27.05.2016, 08:16
Чойто как-то для диплома тема немного сложновата, если по-мне.
Сорри за офф.
0
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 36
27.05.2016, 14:49  [ТС]
Цитата Сообщение от korshun84 Посмотреть сообщение
Чойто как-то для диплома тема немного сложновата, если по-мне.
Сорри за офф.
Для техникума - да. В придачу, еще и диплом исследовательского характера

Добавлено через 5 часов 15 минут
Никак не могу понять, как мне найти угол отклонения от 90 градусов по иксу. Или же есть реализация в самой opencv, или придется изобретать велосипед?
0
 Аватар для chizz
993 / 521 / 102
Регистрация: 19.03.2013
Сообщений: 3,114
Записей в блоге: 19
27.05.2016, 14:55
Задача похожа на задачу распознавания капчи.
0
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 36
28.05.2016, 11:42  [ТС]
Цитата Сообщение от chizz Посмотреть сообщение
Задача похожа на задачу распознавания капчи.
В целом да, но скорее всего с некоторыми доработками

Добавлено через 20 часов 21 минуту
При попытке написать под джаву из примера на С# возникает куча вопросов и ошибок. Большинство статей были написаны под версии opencv 2.3 - 2.4, у меня в проекте используется версия 3.1.0. В ней и методы изменили, все изменили.
Вод допустим пример кода на шарпе.
C#
1
2
3
CvInvoke.cvSmooth(gray, gray, Emgu.CV.CvEnum.SMOOTH_TYPE.CV_GAUSSIAN, 5, 5, 25, 25);
                CvInvoke.cvSobel(gray, sobel, 0, 1, 3); 
                CvInvoke.cvConvert(sobel, gray);
cvSmooth как я понял был изменен в blur, с ним еще как-то получалось работать. А вот Собель вылетает с ошибкой что на указанную аргументом 1-цу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.05.2016, 11:42
Помогаю со студенческими работами здесь

Подключение lib библиотеки чтения автомобильных номеров
Здравствуйте.Пытаюсь подключить библиотеку к проекту,написанному в visual studio 2008,пишет ошибку: megalib1.lib: fatal error LNK1136:...

Управление шлагбаумом на основе распознавания автомобильных номеров
Здравствуйте, коллеги. Необходимо на объект установить систему, которая бы при распознавании автомобильных номеров открывала или не...

Определите объем памяти, отводимый для записи 60 автомобильных номеров
В некоторой стране автомобильный номер длиной 7 имволов составляют из заглавных букв(используется только 14 различных букв) и любых...

Опредилить объем памяти необходимой для хранения 32 автомобильных номеров
В некоторой стране автомобильный номер длиной 7 символов составляется из заглавных букв (всего используется 30 букв) и десятичных цифр в...

Написание программы для распознавания автомобильных номеров с загруженного кадра видео
Здравствуйте. Подскажите, пожалуйста, я ещё начинающий программист и мне нужно написать такую программу, есть интерфейс: Далее мне в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

Новые блоги и статьи
Непрерывная интеграция для пакета Python
Mr. Docker 22.06.2025
Было 4 часа утра пятницы, когда я выпустил новую версию нашей внутренней библиотеки для обработки данных. Релиз 0. 5. 2 содержал небольшой фикс для обработки дат в ISO формате, что может пойти не так?. . .
Продвинутый ETL на C# из OLTP БД в хранилище
stackOverflow 22.06.2025
Работая в сфере корпоративной аналитики, я постоянно сталкиваюсь с одним и тем же - нужны чистые, структурированные и, главное, свежие данные. Без них современные аналитические системы, машинное. . .
Мастер-класс по микросервисам на Node.js
Reangularity 21.06.2025
Node. js стал одной из самых популярных платформ для микросервисной архитектуры не случайно. Его неблокирующая однопоточная модель и событийно-ориентированный подход делают его идеальным для. . .
Управление Arduino из WPF приложения
Wired 21.06.2025
Зачем вообще связывать Arduino с WPF-приложением? Казалось бы, у Arduino есть собственная среда разработки, своя экосистема, свои способы управления. Однако при создании серьезных проектов. . .
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C# Задание 1: КЛАСС FORM 1 public partial class Form1 : Form { Spisok listin = new Spisok(); . . .
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru