Мне понадобится каскадный классификатор haar для обнаружения монет, в частности евро, если они существуют. Я пытался создать свой собственный в течение нескольких дней, но результаты всегда были плохими. Или, может быть, вы знаете хороший учебник? Спасибо
Нужны каскады Хаара для монет (особенно евро)
Ответы (1)
Вы, вероятно, не найдете много каскадов, предварительно сделанных для монет или даже специально для евро. Я бы порекомендовал тренироваться самостоятельно.
Что касается учебных пособий, я использовал учебное пособие по opencv 3.0 traincascade, когда создавал мой каскад LBP, но он также создает HAAR. Я также использовал mergevec, чтобы увеличить число положительных результатов.
В основном то, что я сделал, когда делал свой, было следующим:
Я сгенерировал положительные векторы, используя opencv_createsamples
(который находится в установке opencv) и mergevec
. Я в основном только что создал все свои векторы из небольших партий отдельных позитивных изображений и всех негативных изображений, которые дали мне несколько позитивных изображений для работы. Затем я использовал mergevec
и объединил эти векторы вместе, чтобы получить один векторный файл, который мог бы использовать opencv_traincascade
.
Затем я провел opencv_traincascade
с этим новым положительным вектором из mergevec
и отрицательными, которые у меня были. Я думаю, что у меня получилось около 7000 негативов и около 13000 позитивов, что, вероятно, немного перебор, но я получил действительно хороший каскад. Старайтесь, чтобы ширина и высота были ниже примерно 100х100, иначе на тренировки уйдет вся неделя.
videocapture
и сохраняя каждый кадр как что-то вроде /destinationfolder/imagenameXYZ
, и просто увеличьте это для каждого кадра. Затем вам нужно просмотреть и отсеять действительно плохие изображения, но это проще, чем найти миллиард изображений в Интернете. Фон прост по сравнению с этим - http://tutorial-haartraining.googlecode.com/svn/trunk/data/negatives/
работает, просто убедитесь, что ни на одном из негативов нет монет. их.
- person Rachel L; 28.01.2016
Videocapture capture(0);
открывает веб-камеру, Videocapture capture("file/name/here.avi");
открывает созданный вами видеофайл (я снял его на телефон, а потом перекинул). Вы хотите, чтобы изображение было как можно обрезано, с одним цветом для фона (лучше всего черный и по умолчанию для opencv_createsamples
, но вы можете изменить его на любой цвет, например, синий или белый и т. д.), и это можно сделать либо в этом opencv программу, которая получает кадры, или опубликуйте с помощью графического редактора, такого как paint.net
.
- person Rachel L; 28.01.2016
createsamples
, но вы можете использовать любой цвет. Может быть, коричневый слишком близко, но я не могу быть уверен, не видя его. Вы также можете попробовать больше позитивных изображений — я использовал 10000 для одного объекта. Вы также можете поиграть с переменными minNeighbors
, а также переменными минимального и максимального размера в вызове cascade.detectMultiScale
в коде — уменьшение количества minNeighbors
должно дать вам больше обнаружений (хотя и с большей вероятностью ложных срабатываний).
- person Rachel L; 20.02.2017