Как отличить разные номерные знаки с помощью OpenCV

В настоящее время работаю над системой обнаружения лицензиата и нуждаюсь в некотором руководстве о том, как действовать дальше. Я могу захватывать (путем воспроизведения видео) и с помощью библиотеки с открытым исходным кодом под названием OpenALPR отображать номерные знаки непосредственно на терминале, теперь проблема в том, что он захватывает кадр за кадром, поэтому он захватывает один и тот же номерной знак несколько раз. Я добавил переменную пропуска кадров, и теперь она пропускает столько кадров, сколько я хочу, но проблема все еще существует.

Кроме того, я хотел бы различать разные номерные знаки, если это возможно, но не знаю, как это обойти. Я пытался использовать базовое обнаружение и обнаружение объектов, но с треском провалился.

Ниже приведено изображение работающей программы, как видно, она обнаруживает один номерной знак и отображает несколько его экземпляров, теперь проблема в том, что я ожидаю, что она перейдет к следующему автомобилю и отобразит номер 1, к сожалению, это не так и продолжается подача в планшет №0 Программа выполняется

Выполняется программа

Функция, которая на самом деле помогает отображать текст номерного знака, находится ниже, на самом деле первая строка делает всю работу. OpenALPR довольно мощный.

results = alpr.recognize_ndarray(frame)         
    for i, plate in enumerate(results['results']):             
    best_candidate = plate['candidates'][0]             
    print('Plate #{}: {:} ({:}%)'.format(i, 
          best_candidate['plate'].upper(),   
          best_candidate['confidence']))

Я хотел бы получить некоторые рекомендации о том, как я могу решить эту проблему? Что в основном различает разные номерные знаки.


person Yusuf Yasin    schedule 25.10.2019    source источник


Ответы (1)


Это общая проблема, не имеющая общего решения, потому что она сильно зависит от контекста. Некоторые мысли:

Если это видеопоток, вы можете отслеживать движение номерного знака, трек будет "прыгать" при обнаружении другого номерного знака. Допустим, максимальная скорость оптического потока составляет 100 пикселей/кадр, если она прыгает больше этого порога, можно предположить, что это новая пластина.

В зависимости от вашего качества видео и детектора, могут быть паразитные скачки, я бы добавил фильтр Калмана или любой простой фильтр.

Возможно, существует минимальный промежуток времени между выходом пластины с изображением и появлением следующей. Вы можете использовать временной порог для запуска события «оповещение о смене номерного знака».

person Alejandro Silvestri    schedule 25.10.2019
comment
Ясно, проблема в том, что я чувствую, будто я потерялся в море информации и у меня нет хорошей отправной точки, чтобы понять это. Я сейчас читаю эту книгу. Освоение Opencv с помощью проектов «Практическое компьютерное зрение», Глава 5. Распознавание номерных знаков с использованием SVM и нейронных сетей в попытке понять, как это сделать. Есть ли у вас какие-либо предложения относительно начала работы с этим, с практической точки зрения, что это. Извиняюсь за поздний ответ кстати. - person Yusuf Yasin; 29.10.2019
comment
Взгляните на этот сайт pyimagesearch.com и найдите номерной знак на этой странице pyimagesearch.com/pyimagesearch-gurus . Надеюсь, это поможет. - person Alejandro Silvestri; 29.10.2019