Возвращаясь к теме, запишите случай разработки небольшой системы повторной идентификации пешеходов, основанной на традиционных методах. Весь корпус построен в системе Linux с использованием среды разработки QT, модуль изображения использует opencv, а база данных использует MySQL.
Обработка случая Три видео пешехода, полученные с камер наблюдения Hikvision, набор данных действительно сложно собрать, благодаря помощи окружающих учителей и братьев и сестер, спасибо всем! ! ! На основе существующего видео вся функция реализована в трех частях, а именноИзвлечение изображений пешеходов, внутренняя обработка данных, внешнее извлечение повторной идентификации.Далее отдельное введение.По идее Разговоры не о чем,покажите коды,коды трех частей все обвешаны.
1. Извлечение изображения пешехода
Извлекать пешеходные картинки из видео, а для извлечения пешеходов использовать обнаружение и отслеживание, но для удобства последующей обработки я буду делать больше работы для глупых людей и собирать фото вручную. Но извлекать по одному через инструмент скриншотов действительно сложно, поэтому я сделал небольшое приложение, похожее на видеоплеер. Нажмите на верхнюю левую вершину в этом окне, захваченное изображение появится в боковом окне и подтвердите, следует ли сохранить изображение в зависимости от того, соответствует ли оно требованиям.
Зарезервированное изображение называется CameraID_SuquenceID, и с помощью этих двух полей можно найти видео и положение пешехода в видео. Размер установленного здесь изображения пешехода составляет 128Х64, что позволяет идентифицировать пешеходов, а перехват такого размера в широкоугольной камере может примерно включать голову и ноги пешехода.
Формат данных изображения в opencv — это Mat, а отображение в метке здесь должно пройти преобразование формата Mat -> QImage -> QPixmap. Лицо также может быть обнаружено с помощью haarcascades, предоставляемых opencv, и программа может быть расширена на все тело в соответствии с информацией о размере и координатах полученного кадра обнаружения. Кодовый адрес этой части:GitHub.com/he20134297/is…
2. Внутренняя обработка данных
В этой части много процедур, но описывается она одним предложением: занести результаты сравнения в базу данных. При более позднем поиске пешехода, если будут получены идентификатор видео и порядковый номер пешехода на изображении, может быть выполнен ближайший поиск.
Во-первых, давайте поговорим о методе сравнения сходства пешеходов и используемом цветовом признаке. Пешеход делится на две части, туловище и ноги, каждая часть делится на 5 частей, и для сравнения RGB преобразуется в HSV. Извлечение гистограммы opencv действительно не просто в использовании.Я могу только скомпилировать настраиваемую статистическую функцию гистограммы в соответствии с потребностями.Я не знаю, правильно ли сравнение, поэтому я написал другую функцию для создания гистограммы.
При сравнении подобия используется расстояние Бхаттачари, каждый пешеход сравнивается с другими пешеходами и извлекается топ 5. В небольшом диапазоне ранг 1 равен 0,833, а ранг 5 близок к 0,95. В принципе, пропущенного обнаружения не будет.
Структура, хранящаяся в базе данных, показана на рисунке
Каждая запись содержит 9 полей, верхние 1-5 — это пять картинок, наиболее похожих на картинку, а следующие поля используются для последующего поиска и позиционирования. Адрес этой части кода:GitHub.com/he20134297/i…
3. Поиск повторной идентификации переднего плана
Эта часть используется для обнаружения пешеходов.В этом приложении можно выбрать пешехода для приложения повторной идентификации.Интерфейс приложения показан на рисунке.
Когда пешеход для обнаружения выбран, программа находит положение изображения, которое нужно обнаружить, в базе данных сервера, извлекает наиболее похожее изображение, а затем определяет видео и последовательность через идентификатор изображения для получения видеоклипов. Я установил десять окон воспроизведения, но из-за повторяющихся причин они будут отображаться в соответствии с фактическими результатами обнаружения.
Адрес этой части кода:GitHub.com/he20134297/i…