Оглавление:
Видео: Создание классификаторов изображений OpenCV с помощью Python: 7 шагов
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Классификаторы Хаара в python и opencv - довольно сложная, но легкая задача.
Мы часто сталкиваемся с проблемами при обнаружении и классификации изображений. Лучшее решение - создать свой собственный классификатор. Здесь мы учимся создавать собственные классификаторы изображений с помощью нескольких команд и длинных, но простых программ на Python.
Классификация требует большого количества негативных и позитивных изображений, негативы не содержат требуемый объект, тогда как позитивные изображения содержат объект, который необходимо обнаружить.
Требуется около 2000 негативов и позитивов. Программа python преобразует изображение в оттенки серого и подходящего размера, чтобы классификаторам потребовалось оптимальное время для создания.
Шаг 1. Требуемое программное обеспечение
Для создания собственного классификатора вам потребуется следующее программное обеспечение
1) OpenCV: я использовал версию 3.4.2. версия легко доступна в Интернете.
2) Python: используется версия 3.6.2. Можно скачать с python.org
Кроме того, вам понадобится веб-камера (конечно).
Шаг 2: загрузка изображений
Первый шаг - сделать четкое изображение классифицируемого объекта.
Размер не должен быть очень большим, так как компьютер требует больше времени для обработки. Я взял размер 50 на 50.
Далее мы загружаем негативные и позитивные изображения. Вы можете найти их в Интернете. Но мы используем код Python для загрузки изображений с
Затем мы конвертируем изображения в оттенки серого и в нормальный размер. Это также реализовано в коде. Код также удаляет все дефектные изображения.
К настоящему моменту ваш каталог должен содержать изображение объекта, например, watch5050-j.webp
Если папка с данными не создана, сделайте это вручную
Код Python предоставляется в файле.py
Шаг 3: Создание положительных образцов в OpenCV
Теперь перейдите в каталог opencv_createsamples и добавьте весь вышеупомянутый контент.
в командной строке перейдите в C: / opencv342 / build / x64 / vc14 / bin, чтобы найти приложения opencv_createsamples и opencv_traincascade
теперь выполните следующие команды
opencv_createsamples -img watch5050-j.webp
Эта команда предназначена для создания положительных образцов объекта 1950, а точнее файла описания info.lst положительных изображений, описание должно быть таким 0001_0014_0045_0028_0028-j.webp
Теперь папка содержит
информация
папка с изображениями neg
файл bg.txt
пустая папка с данными
Шаг 4: Создание позитивного векторного файла
Теперь создайте позитивный векторный файл, который обеспечивает путь к позитивным изображениям файл описания.
Используйте следующую команду
opencv_createsamples -info info / info.lst -num 1950 -w 20 -h 20 -vec positives.vec
К настоящему моменту содержимое каталога должно быть следующим:
--нег
---- negimages.jpg
--opencv
--Информация
--данные
--positives.vec
--bg.txt
--watch5050-j.webp
Шаг 5: Обучение классификатора
Теперь давайте обучим каскад haar и создадим файл xml.
Используйте следующую команду
opencv_traincascade -data data -vec positives.vec -bg bg.txt -numPos 1800 -numNeg 900 -numStages 10 -w 20 -h 20
этапов 10. Увеличение этапов требует большей обработки, но классификатор намного эффективнее.
Теперь haarcascade создан. Для завершения требуется около двух часов. Откройте папку с данными и вы найдете здесь cascade.xml. Это классификатор, который был создан.
Шаг 6. Тестирование классификатора
Папка данных содержит файлы, как показано на изображении выше.
После создания классификатора мы смотрим, работает он или нет, запустив программу object_detect.py. Не забудьте поместить файл classifier.xml в каталог python.
Шаг 7. Особая благодарность
Я хотел бы поблагодарить Sentdex, который является отличным программистом на Python.
У него есть имя на YouTube с вышеупомянутым именем, а в видео, которое мне очень помогло, есть эта ссылка
Большая часть кода скопирована из sentdex. Несмотря на большую помощь sentdex, я все еще сталкивался с множеством проблем. Я просто хотел поделиться своим опытом.
Надеюсь, вам помогло это решение !!! Следите за новостями.
BR
Тахир Уль Хак