2016-02-27 3 views
-1

меня это изображению example imageизвлечение части изображения, описанное с красной коробкой с OpenCV (C++)


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

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

В настоящее время я использую фильтр hsv для создания маски и использую маску для обрезки изображения только на красный квадрат.

cvtColor(src, HSV, COLOR_BGR2HSV); 
inRange(HSV, Scalar(H_MIN, S_MIN, V_MIN), Scalar(H_MAX, S_MAX, V_MAX), HSVmask); 
src.copyTo(src2, HSVmask); 

Это приводит к плохой маске, поскольку он имеет Т сами по себе без зависимости от того, как я просмотреть изображение, я нужен более надежный подход.

-Мне было интересно, если есть способ сделать окно вокруг значительного белого региона и использовать его в качестве маски, но я не уверен, как реализовать это на opencv.

С маской, которую я применяю для обнаружения каменного края, я нахожу контуры и заполняю контуры.

Моих результатов Contour Output and Mask

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

Есть ли способ, которым я могу улучшить этот процесс в целом?

Метод распознавания символов еще не решен.

+0

Вы пробовали что-нибудь? Например: Mat1b mask; inRange (изображение, скаляр (255,0,0), скаляр (255,0,0), маска); – Miki

ответ

0

Если вы просто хотите, чтобы признать персонажу

  1. Преобразование изображения в оттенки серого.
  2. Поскольку символ белый, а остальная часть изображения окрашена, символ в сером изображении по-прежнему будет белым. Поэтому возьмите порог и подавите все не белые пиксели.
  3. Запустите свой классификатор, чтобы распознать символ.

Если вы хотите извлечь красный прямоугольник

  1. Найдите красные пиксели, а затем обрезать изображение.

 Смежные вопросы

  • Нет связанных вопросов^_^